ZQuest Classic Coverage Report


Directory: src/
File: src/parser/y.tab.cpp
Date: 2024-08-04 23:08:25
Exec Total Coverage
Lines: 1067 1762 60.6%
Functions: 39 51 76.5%
Branches: 823 2343 35.1%

Line Branch Exec Source
1 /* A Bison parser, made by GNU Bison 3.8.2. */
2
3 /* Skeleton implementation for Bison GLR parsers in C
4
5 Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <https://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C GLR parser skeleton written by Paul Hilfinger. */
34
35 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
36 especially those whose name start with YY_ or yy_. They are
37 private implementation details that can be changed or removed. */
38
39 /* Identify Bison output, and Bison version. */
40 #define YYBISON 30802
41
42 /* Bison version string. */
43 #define YYBISON_VERSION "3.8.2"
44
45 /* Skeleton name. */
46 #define YYSKELETON_NAME "glr.c"
47
48 /* Pure parsers. */
49 #define YYPURE 0
50
51
52
53
54
55
56 /* First part of user prologue. */
57 #line 8 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
58
59 #include "parserDefs.h"
60 #include <stdlib.h>
61 #include <stdio.h>
62 #include <cassert>
63 #include <string>
64 #include <set>
65 #include <sstream>
66 #include "ASTVisitors.h"
67 #include "CompileOption.h"
68 #include "zsyssimple.h"
69 #include "parser/ParserHelper.h"
70 #include "base/util.h"
71
72 using std::string;
73 using std::ostringstream;
74 using namespace ZScript;
75
76 #define YYINCLUDED_STDLIB_H
77 extern int32_t yydebug;
78 extern int32_t yyrow;
79 extern int32_t yycol;
80 extern char* yytext;
81 extern int32_t yyleng;
82 extern int32_t yylex(void);
83 extern FILE *yyin, *yyout;
84 extern ZScript::AST* first_identifier_for_line;
85 extern void resetLexer();
86 void yyerror(std::unique_ptr<ASTFile>& root, const char* s);
87 void yymsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
88 void yywarn(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
89 void yyerrmsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
90 void yydb(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
91 std::string curfilename;
92 extern YYLTYPE noloc;
93
94 #define push_front(v, elem) (v).insert((v).begin(), elem)
95 void trunc_str(std::string& str, size_t sz, std::string const& header, int32_t row = yyrow,
96 int32_t col = yycol, char const* txt = yytext)
97 {
98 if(str.size() > sz)
99 {
100 yyerrmsg("ERROR: "+header+": String value '" + str + "' is too long. Max '"+std::to_string(sz)+"' characters.", row, col, txt);
101 str = str.substr(0,sz);
102 }
103 }
104
105 enum
106 {
107 ANNTY_NONE,
108 ANNTY_STR,
109 ANNTY_INT,
110 ANNTY_MAX
111 };
112 static string annot_tys[ANNTY_MAX] = {"Empty", "String", "Number"};
113
114 int annot_row, annot_col;
115 string annot_err_txt;
116 static const string annot_err_header = "ERROR: Bad Annotation Value";
117 struct AnnotData
118 {
119 string key, strval;
120 string val, unescaped_val;
121 int intval;
122 uint type;
123 };
124 void annot_errstr(string const& str)
125 {
126 yyerrmsg(str, annot_row, annot_col, annot_err_txt.c_str());
127 }
128 void annot_trunc_str(string& str, size_t size)
129 {
130 trunc_str(str, size, annot_err_header, annot_row, annot_col, annot_err_txt.c_str());
131 }
132 bool annot_type_check(uint expected, AnnotData const& data)
133 {
134 if(expected == data.type)
135 return true;
136 annot_errstr("ERROR: Bad Annotation Value: @"+data.key
137 +" expects a "+annot_tys[expected]+", not a "+annot_tys[data.type]);
138 return false;
139 }
140 void handle_annotations(ASTAnnotationList* list, std::function<bool(AnnotData&)> fn)
141 {
142 owning_vector<ASTAnnotation>& set = list->set;
143 annot_row = list->location.first_line;
144 annot_col = list->location.first_column;
145 std::set<std::string> used_keys;
146 for(size_t q = 0; q < set.size(); ++q)
147 {
148 ASTAnnotation* a = set[q];
149 AnnotData data = AnnotData();
150 data.key = a->key->getValue();
151 data.type = ANNTY_NONE;
152 data.strval = "";
153 data.intval = 0;
154 if(a->strval)
155 {
156 data.type = ANNTY_STR;
157 data.strval = a->strval->getValue();
158 }
159 else if(a->intval)
160 {
161 data.type = ANNTY_INT;
162 data.intval = a->intval->getValue(nullptr);
163 }
164
165 data.val = "";
166 data.unescaped_val = "";
167 switch(data.type)
168 {
169 case ANNTY_STR:
170 data.val = data.strval;
171 data.unescaped_val = util::disallow_escapes(util::escape_characters(data.strval));
172 break;
173 case ANNTY_INT:
174 data.val = data.unescaped_val = to_string(data.intval);
175 break;
176 }
177 annot_err_txt = "@" + data.key + "(" + data.val + ")";
178
179 if(used_keys.contains(data.key))
180 {
181 annot_errstr("ERROR: Duplicate Annotation Key: @"+data.key+" was already set.");
182 continue;
183 }
184 if(!fn(data))
185 annot_errstr("ERROR: Bad Annotation Key: '"+data.val+"'");
186 }
187 delete list;
188 }
189
190 ASTExpr* handle_statement_expr(ASTExpr* expr)
191 {
192 if(ASTExprIncrement* increm = dynamic_cast<ASTExprIncrement*>(expr))
193 {
194 increm->is_pre = true;
195 }
196 else if(ASTExprDecrement* decrem = dynamic_cast<ASTExprDecrement*>(expr))
197 {
198 decrem->is_pre = true;
199 }
200 return expr;
201 }
202
203 #pragma warning( disable : 4065 )
204
205 #line 206 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
206
207 # ifndef YY_CAST
208 # ifdef __cplusplus
209 # define YY_CAST(Type, Val) static_cast<Type> (Val)
210 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
211 # else
212 # define YY_CAST(Type, Val) ((Type) (Val))
213 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
214 # endif
215 # endif
216 # ifndef YY_NULLPTR
217 # if defined __cplusplus
218 # if 201103L <= __cplusplus
219 # define YY_NULLPTR nullptr
220 # else
221 # define YY_NULLPTR 0
222 # endif
223 # else
224 # define YY_NULLPTR ((void*)0)
225 # endif
226 # endif
227
228 #include "y.tab.hpp"
229
230 /* Symbol kind. */
231 enum yysymbol_kind_t
232 {
233 YYSYMBOL_YYEMPTY = -2,
234 YYSYMBOL_YYEOF = 0, /* "end of file" */
235 YYSYMBOL_YYerror = 1, /* error */
236 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
237 YYSYMBOL_SCRIPT = 3, /* SCRIPT */
238 YYSYMBOL_ZCLASS = 4, /* ZCLASS */
239 YYSYMBOL_FOR = 5, /* FOR */
240 YYSYMBOL_LOOP = 6, /* LOOP */
241 YYSYMBOL_IF = 7, /* IF */
242 YYSYMBOL_ELSE = 8, /* ELSE */
243 YYSYMBOL_SWITCH = 9, /* SWITCH */
244 YYSYMBOL_CASE = 10, /* CASE */
245 YYSYMBOL_DEFAULT = 11, /* DEFAULT */
246 YYSYMBOL_RETURN = 12, /* RETURN */
247 YYSYMBOL_IMPORT = 13, /* IMPORT */
248 YYSYMBOL_ZTRUE = 14, /* ZTRUE */
249 YYSYMBOL_ZFALSE = 15, /* ZFALSE */
250 YYSYMBOL_WHILE = 16, /* WHILE */
251 YYSYMBOL_BREAK = 17, /* BREAK */
252 YYSYMBOL_CONTINUE = 18, /* CONTINUE */
253 YYSYMBOL_ZCONST = 19, /* ZCONST */
254 YYSYMBOL_DO = 20, /* DO */
255 YYSYMBOL_TYPEDEF = 21, /* TYPEDEF */
256 YYSYMBOL_EXPECTERROR = 22, /* EXPECTERROR */
257 YYSYMBOL_OPTIONVALUE = 23, /* OPTIONVALUE */
258 YYSYMBOL_ISINCLUDED = 24, /* ISINCLUDED */
259 YYSYMBOL_DEFINE = 25, /* DEFINE */
260 YYSYMBOL_ENUM = 26, /* ENUM */
261 YYSYMBOL_NAMESPACE = 27, /* NAMESPACE */
262 YYSYMBOL_USING = 28, /* USING */
263 YYSYMBOL_ALWAYS = 29, /* ALWAYS */
264 YYSYMBOL_ZASM = 30, /* ZASM */
265 YYSYMBOL_INCLUDE = 31, /* INCLUDE */
266 YYSYMBOL_INCLUDEPATH = 32, /* INCLUDEPATH */
267 YYSYMBOL_INCLUDEIF = 33, /* INCLUDEIF */
268 YYSYMBOL_UNTIL = 34, /* UNTIL */
269 YYSYMBOL_UNLESS = 35, /* UNLESS */
270 YYSYMBOL_REPEAT = 36, /* REPEAT */
271 YYSYMBOL_INLINE = 37, /* INLINE */
272 YYSYMBOL_INTERNAL = 38, /* INTERNAL */
273 YYSYMBOL_STATIC = 39, /* STATIC */
274 YYSYMBOL_CONSTEXPR = 40, /* CONSTEXPR */
275 YYSYMBOL_NEW = 41, /* NEW */
276 YYSYMBOL_DELETE = 42, /* DELETE */
277 YYSYMBOL_CASSERT = 43, /* CASSERT */
278 YYSYMBOL_ZAUTO = 44, /* ZAUTO */
279 YYSYMBOL_ZVOID = 45, /* ZVOID */
280 YYSYMBOL_UNTYPED = 46, /* UNTYPED */
281 YYSYMBOL_ZBOOL = 47, /* ZBOOL */
282 YYSYMBOL_ZFLOAT = 48, /* ZFLOAT */
283 YYSYMBOL_ZCHAR = 49, /* ZCHAR */
284 YYSYMBOL_ZLONG = 50, /* ZLONG */
285 YYSYMBOL_ZRGB = 51, /* ZRGB */
286 YYSYMBOL_COMMA = 52, /* COMMA */
287 YYSYMBOL_DOT = 53, /* DOT */
288 YYSYMBOL_SEMICOLON = 54, /* SEMICOLON */
289 YYSYMBOL_SCOPERES = 55, /* SCOPERES */
290 YYSYMBOL_COLON = 56, /* COLON */
291 YYSYMBOL_IN = 57, /* IN */
292 YYSYMBOL_LPAREN = 58, /* LPAREN */
293 YYSYMBOL_RPAREN = 59, /* RPAREN */
294 YYSYMBOL_EMPTYBRACKETS = 60, /* EMPTYBRACKETS */
295 YYSYMBOL_LBRACKET = 61, /* LBRACKET */
296 YYSYMBOL_RBRACKET = 62, /* RBRACKET */
297 YYSYMBOL_LBRACE = 63, /* LBRACE */
298 YYSYMBOL_RBRACE = 64, /* RBRACE */
299 YYSYMBOL_QMARK = 65, /* QMARK */
300 YYSYMBOL_ARROW = 66, /* ARROW */
301 YYSYMBOL_INCREMENT = 67, /* INCREMENT */
302 YYSYMBOL_DECREMENT = 68, /* DECREMENT */
303 YYSYMBOL_NOT = 69, /* NOT */
304 YYSYMBOL_BITNOT = 70, /* BITNOT */
305 YYSYMBOL_EXPN = 71, /* EXPN */
306 55260 YYSYMBOL_TIMES = 72, /* TIMES */
307 YYSYMBOL_DIVIDE = 73, /* DIVIDE */
308 YYSYMBOL_MODULO = 74, /* MODULO */
309 YYSYMBOL_PLUS = 75, /* PLUS */
310 YYSYMBOL_MINUS = 76, /* MINUS */
311 YYSYMBOL_LSHIFT = 77, /* LSHIFT */
312 YYSYMBOL_RSHIFT = 78, /* RSHIFT */
313 3943877 YYSYMBOL_LE = 79, /* LE */
314 3943877 YYSYMBOL_LT = 80, /* LT */
315 YYSYMBOL_GE = 81, /* GE */
316 3638 YYSYMBOL_GT = 82, /* GT */
317 3638 YYSYMBOL_EQ = 83, /* EQ */
318
1/2
✓ Branch 0 taken 3638 times.
✗ Branch 1 not taken.
3638 YYSYMBOL_NE = 84, /* NE */
319 YYSYMBOL_BITAND = 85, /* BITAND */
320
2/6
✓ Branch 0 taken 55315 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 55315 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
55315 YYSYMBOL_BITXOR = 86, /* BITXOR */
321 YYSYMBOL_BITOR = 87, /* BITOR */
322 YYSYMBOL_AND = 88, /* AND */
323 YYSYMBOL_OR = 89, /* OR */
324 53714 YYSYMBOL_XOR = 90, /* XOR */
325 1160 YYSYMBOL_ASSIGN = 91, /* ASSIGN */
326 3755 YYSYMBOL_PLUSASSIGN = 92, /* PLUSASSIGN */
327 37031 YYSYMBOL_MINUSASSIGN = 93, /* MINUSASSIGN */
328 2466 YYSYMBOL_TIMESASSIGN = 94, /* TIMESASSIGN */
329 2736481 YYSYMBOL_DIVIDEASSIGN = 95, /* DIVIDEASSIGN */
330 988449 YYSYMBOL_MODULOASSIGN = 96, /* MODULOASSIGN */
331 3465 YYSYMBOL_LSHIFTASSIGN = 97, /* LSHIFTASSIGN */
332 10 YYSYMBOL_RSHIFTASSIGN = 98, /* RSHIFTASSIGN */
333 32892 YYSYMBOL_BITANDASSIGN = 99, /* BITANDASSIGN */
334 84448 YYSYMBOL_BITXORASSIGN = 100, /* BITXORASSIGN */
335 YYSYMBOL_BITORASSIGN = 101, /* BITORASSIGN */
336 YYSYMBOL_ANDASSIGN = 102, /* ANDASSIGN */
337 6 YYSYMBOL_ORASSIGN = 103, /* ORASSIGN */
338 YYSYMBOL_CAST = 104, /* CAST */
339 YYSYMBOL_RANGE = 105, /* RANGE */
340 YYSYMBOL_RANGE_L = 106, /* RANGE_L */
341 YYSYMBOL_RANGE_R = 107, /* RANGE_R */
342 YYSYMBOL_RANGE_LR = 108, /* RANGE_LR */
343 YYSYMBOL_RANGE_N = 109, /* RANGE_N */
344 YYSYMBOL_APPXEQUAL = 110, /* APPXEQUAL */
345 YYSYMBOL_DOUBLEBANG = 111, /* DOUBLEBANG */
346 YYSYMBOL_PERCENT = 112, /* PERCENT */
347 YYSYMBOL_BITNOTASSIGN = 113, /* BITNOTASSIGN */
348 YYSYMBOL_INVMOD = 114, /* INVMOD */
349 YYSYMBOL_DOUBLEADDR = 115, /* DOUBLEADDR */
350 YYSYMBOL_DOUBLESTAR = 116, /* DOUBLESTAR */
351 YYSYMBOL_HANDLE = 117, /* HANDLE */
352 YYSYMBOL_HANDLETOHANDLE = 118, /* HANDLETOHANDLE */
353 YYSYMBOL_ADDR = 119, /* ADDR */
354 YYSYMBOL_HASH = 120, /* HASH */
355 YYSYMBOL_ENDLINE = 121, /* ENDLINE */
356 YYSYMBOL_NEWLINE = 122, /* NEWLINE */
357 YYSYMBOL_OPTION = 123, /* OPTION */
358 YYSYMBOL_INHERIT = 124, /* INHERIT */
359 YYSYMBOL_IDENTIFIER = 125, /* IDENTIFIER */
360 YYSYMBOL_QUOTEDSTRING = 126, /* QUOTEDSTRING */
361 YYSYMBOL_CASESTRING = 127, /* CASESTRING */
362 YYSYMBOL_IMPORTSTRING = 128, /* IMPORTSTRING */
363 YYSYMBOL_SINGLECHAR = 129, /* SINGLECHAR */
364 YYSYMBOL_NUMBER = 130, /* NUMBER */
365 YYSYMBOL_LONGNUMBER = 131, /* LONGNUMBER */
366 YYSYMBOL_YYACCEPT = 132, /* $accept */
367 YYSYMBOL_Init = 133, /* Init */
368 YYSYMBOL_Global_List = 134, /* Global_List */
369 YYSYMBOL_Global_Statement = 135, /* Global_Statement */
370 4683 YYSYMBOL_Namespace = 136, /* Namespace */
371 4683 YYSYMBOL_Namespace_Block_List = 137, /* Namespace_Block_List */
372 4683 YYSYMBOL_Namespace_Statement = 138, /* Namespace_Statement */
373
2/2
✓ Branch 0 taken 4682 times.
✓ Branch 1 taken 1 times.
4683 YYSYMBOL_Using = 139, /* Using */
374 YYSYMBOL_AlwaysUsing = 140, /* AlwaysUsing */
375 4682 YYSYMBOL_Import = 141, /* Import */
376 4682 YYSYMBOL_IncludePath = 142, /* IncludePath */
377 4682 YYSYMBOL_Option = 143, /* Option */
378
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4682 times.
4682 YYSYMBOL_Statement_Assert = 144, /* Statement_Assert */
379 4682 YYSYMBOL_DataTypeDef = 145, /* DataTypeDef */
380 4682 YYSYMBOL_StandardDataTypedef = 146, /* StandardDataTypedef */
381
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_EnumDataTypedef = 147, /* EnumDataTypedef */
382 YYSYMBOL_DataType = 148, /* DataType */
383
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 YYSYMBOL_DataType_Mods = 149, /* DataType_Mods */
384 YYSYMBOL_DataType_Base = 150, /* DataType_Base */
385 YYSYMBOL_ScriptTypeDef = 151, /* ScriptTypeDef */
386 YYSYMBOL_Data = 152, /* Data */
387 YYSYMBOL_Data_List = 153, /* Data_List */
388 YYSYMBOL_Data_Element = 154, /* Data_Element */
389 YYSYMBOL_Data_Element_Array_List = 155, /* Data_Element_Array_List */
390 YYSYMBOL_Single_Data_req_assign = 156, /* Single_Data_req_assign */
391 YYSYMBOL_Data_Element_Array_Element = 157, /* Data_Element_Array_Element */
392 YYSYMBOL_Data_Element_Array_Element_Size_List = 158, /* Data_Element_Array_Element_Size_List */
393 YYSYMBOL_Function = 159, /* Function */
394 YYSYMBOL_Function_Typeless = 160, /* Function_Typeless */
395 YYSYMBOL_Function_Heading = 161, /* Function_Heading */
396 YYSYMBOL_FunctionTemplateList = 162, /* FunctionTemplateList */
397 YYSYMBOL_Function_Parameters_List = 163, /* Function_Parameters_List */
398 YYSYMBOL_Function_Parameters_Element = 164, /* Function_Parameters_Element */
399 YYSYMBOL_Function_OptParams_List = 165, /* Function_OptParams_List */
400 YYSYMBOL_Function_VarArg_Element = 166, /* Function_VarArg_Element */
401 YYSYMBOL_Class_Ident = 167, /* Class_Ident */
402 YYSYMBOL_Class = 168, /* Class */
403 YYSYMBOL_Class_Block = 169, /* Class_Block */
404 YYSYMBOL_Class_Block_List = 170, /* Class_Block_List */
405 YYSYMBOL_Class_Constructor = 171, /* Class_Constructor */
406 YYSYMBOL_Class_Destructor = 172, /* Class_Destructor */
407 YYSYMBOL_Class_Data = 173, /* Class_Data */
408 YYSYMBOL_Class_Block_Element = 174, /* Class_Block_Element */
409 YYSYMBOL_Annotated_Script = 175, /* Annotated_Script */
410 YYSYMBOL_Script = 176, /* Script */
411 YYSYMBOL_Script_Type = 177, /* Script_Type */
412 YYSYMBOL_Script_Block = 178, /* Script_Block */
413 YYSYMBOL_Script_Block_List = 179, /* Script_Block_List */
414 YYSYMBOL_Script_Block_Element = 180, /* Script_Block_Element */
415 4683 YYSYMBOL_Annotation_List = 181, /* Annotation_List */
416
2/4
✓ Branch 0 taken 4683 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4683 times.
✗ Branch 3 not taken.
4683 YYSYMBOL_Annotation = 182, /* Annotation */
417 YYSYMBOL_Block_Statement = 183, /* Block_Statement */
418 YYSYMBOL_Statement = 184, /* Statement */
419 YYSYMBOL_Statement_NoSemicolon = 185, /* Statement_NoSemicolon */
420 YYSYMBOL_Statement_Block = 186, /* Statement_Block */
421 YYSYMBOL_Statement_Block_List = 187, /* Statement_Block_List */
422 YYSYMBOL_Statement_If = 188, /* Statement_If */
423 33174 YYSYMBOL_If_Body = 189, /* If_Body */
424 33174 YYSYMBOL_Statement_Switch = 190, /* Statement_Switch */
425 33174 YYSYMBOL_Statement_Switch_Body = 191, /* Statement_Switch_Body */
426 33174 YYSYMBOL_Statement_Switch_Cases = 192, /* Statement_Switch_Cases */
427 33174 YYSYMBOL_Statement_For = 193, /* Statement_For */
428 YYSYMBOL_Statement_CommaList = 194, /* Statement_CommaList */
429 YYSYMBOL_Statement_For_Standard = 195, /* Statement_For_Standard */
430 YYSYMBOL_Statement_For_Each = 196, /* Statement_For_Each */
431 YYSYMBOL_Annotated_Loop = 197, /* Annotated_Loop */
432 YYSYMBOL_Statement_Loop = 198, /* Statement_Loop */
433 YYSYMBOL_Statement_Loop_Inf = 199, /* Statement_Loop_Inf */
434 YYSYMBOL_Statement_Loop_Range = 200, /* Statement_Loop_Range */
435 YYSYMBOL_Statement_Loop_Range_Base = 201, /* Statement_Loop_Range_Base */
436 YYSYMBOL_Token_In = 202, /* Token_In */
437 YYSYMBOL_Statement_While = 203, /* Statement_While */
438 YYSYMBOL_Statement_Do = 204, /* Statement_Do */
439 YYSYMBOL_Statement_Repeat = 205, /* Statement_Repeat */
440
2/6
✓ Branch 0 taken 4684 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4684 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4684 YYSYMBOL_Statement_Return = 206, /* Statement_Return */
441 YYSYMBOL_Statement_CompileError = 207, /* Statement_CompileError */
442 YYSYMBOL_DataEnum = 208, /* DataEnum */
443 YYSYMBOL_Enum_Block = 209, /* Enum_Block */
444 YYSYMBOL_ScopeRes = 210, /* ScopeRes */
445 YYSYMBOL_Identifier_List = 211, /* Identifier_List */
446 YYSYMBOL_Scoperes_Identifier_List = 212, /* Scoperes_Identifier_List */
447 YYSYMBOL_Mixed_Identifier_List = 213, /* Mixed_Identifier_List */
448 YYSYMBOL_idlist_scopres = 214, /* idlist_scopres */
449 YYSYMBOL_idlist_dot = 215, /* idlist_dot */
450 YYSYMBOL_Ambigious_Iden_List = 216, /* Ambigious_Iden_List */
451 YYSYMBOL_Identifier = 217, /* Identifier */
452 928 YYSYMBOL_Func_Left = 218, /* Func_Left */
453 47 YYSYMBOL_Function_Call = 219, /* Function_Call */
454 YYSYMBOL_Function_Call_Parameters = 220, /* Function_Call_Parameters */
455 307 YYSYMBOL_Expr_1 = 221, /* Expr_1 */
456 36509 YYSYMBOL_Expr_2 = 222, /* Expr_2 */
457 26 YYSYMBOL_Expr_Arrow = 223, /* Expr_Arrow */
458 28 YYSYMBOL_Expr_3 = 224, /* Expr_3 */
459 4 YYSYMBOL_Expr_4 = 225, /* Expr_4 */
460 7 YYSYMBOL_Expr_5 = 226, /* Expr_5 */
461 1 YYSYMBOL_Expr_6 = 227, /* Expr_6 */
462 1 YYSYMBOL_Expr_7 = 228, /* Expr_7 */
463 YYSYMBOL_Expr_8 = 229, /* Expr_8 */
464 YYSYMBOL_Expr_9 = 230, /* Expr_9 */
465 YYSYMBOL_Expr_10 = 231, /* Expr_10 */
466 YYSYMBOL_Expr_11 = 232, /* Expr_11 */
467 YYSYMBOL_Expr_12 = 233, /* Expr_12 */
468 YYSYMBOL_Expr_13 = 234, /* Expr_13 */
469 YYSYMBOL_Expr_14 = 235, /* Expr_14 */
470 YYSYMBOL_Expr_15 = 236, /* Expr_15 */
471 YYSYMBOL_Expr_16 = 237, /* Expr_16 */
472 YYSYMBOL_Expr_17 = 238, /* Expr_17 */
473 YYSYMBOL_Expr_18 = 239, /* Expr_18 */
474 7 YYSYMBOL_Expression = 240, /* Expression */
475
2/6
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7 YYSYMBOL_Statement_Expression = 241, /* Statement_Expression */
476 YYSYMBOL_Expression_Constant = 242, /* Expression_Constant */
477 YYSYMBOL_Expression_Const_Range = 243, /* Expression_Const_Range */
478 YYSYMBOL_Expression_Range = 244, /* Expression_Range */
479 YYSYMBOL_Literal = 245, /* Literal */
480 YYSYMBOL_QuotedString = 246, /* QuotedString */
481 YYSYMBOL_Literal_String = 247, /* Literal_String */
482 YYSYMBOL_Literal_Bool = 248, /* Literal_Bool */
483 YYSYMBOL_Literal_Array = 249, /* Literal_Array */
484 YYSYMBOL_Literal_Array_Body = 250 /* Literal_Array_Body */
485 };
486 typedef enum yysymbol_kind_t yysymbol_kind_t;
487
488
489 34897 /* Default (constant) value used for initialization for null
490
3/8
✓ Branch 0 taken 34897 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 34897 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 34897 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
34897 right-hand sides. Unlike the standard yacc.c template, here we set
491 the default value of $$ to a zeroed-out value. Since the default
492 value is undefined, this behavior is technically correct. */
493 18817 static YYSTYPE yyval_default;
494
3/8
✓ Branch 0 taken 18817 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18817 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18817 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
18817 static YYLTYPE yyloc_default
495 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
496 = { 1, 1, 1, 1 }
497 # endif
498 ;
499
500
501
502 #include <stddef.h>
503 #include <stdint.h>
504 #include <stdio.h>
505 #include <stdlib.h>
506 1160 #include <string.h>
507
3/8
✓ Branch 0 taken 1160 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1160 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1160 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1160
508 #ifdef short
509 # undef short
510 #endif
511
512 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
513 <limits.h> and (if available) <stdint.h> are included
514 so that the code can choose integer types of a good width. */
515
516 3646 #ifndef __PTRDIFF_MAX__
517 3646 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
518
3/8
✓ Branch 0 taken 3646 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3646 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3646 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
3646 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
519 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
520 # define YY_STDINT_H
521 # endif
522 #endif
523
524 /* Narrow types that promote to a signed type and that can represent a
525 signed or unsigned integer of at least N bits. In tables they can
526 save space and decrease cache pressure. Promoting to a signed type
527 helps avoid bugs in integer arithmetic. */
528
529 #ifdef __INT_LEAST8_MAX__
530 typedef __INT_LEAST8_TYPE__ yytype_int8;
531 #elif defined YY_STDINT_H
532 typedef int_least8_t yytype_int8;
533 #else
534 typedef signed char yytype_int8;
535 #endif
536
537 #ifdef __INT_LEAST16_MAX__
538 typedef __INT_LEAST16_TYPE__ yytype_int16;
539 #elif defined YY_STDINT_H
540 typedef int_least16_t yytype_int16;
541 #else
542 typedef short yytype_int16;
543 #endif
544
545 /* Work around bug in HP-UX 11.23, which defines these macros
546 incorrectly for preprocessor constants. This workaround can likely
547 be removed in 2023, as HPE has promised support for HP-UX 11.23
548 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
549 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
550 #ifdef __hpux
551 # undef UINT_LEAST8_MAX
552 # undef UINT_LEAST16_MAX
553 # define UINT_LEAST8_MAX 255
554 # define UINT_LEAST16_MAX 65535
555 #endif
556
557 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
558 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
559 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
560 && UINT_LEAST8_MAX <= INT_MAX)
561 typedef uint_least8_t yytype_uint8;
562 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
563 typedef unsigned char yytype_uint8;
564 #else
565 typedef short yytype_uint8;
566 #endif
567
568 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
569 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
570 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
571 && UINT_LEAST16_MAX <= INT_MAX)
572 typedef uint_least16_t yytype_uint16;
573 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
574
3/8
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
18 typedef unsigned short yytype_uint16;
575 #else
576 typedef int yytype_uint16;
577 #endif
578 #ifndef YYPTRDIFF_T
579 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
580 # define YYPTRDIFF_T __PTRDIFF_TYPE__
581 11075 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
582 26005 # elif defined PTRDIFF_MAX
583 # ifndef ptrdiff_t
584 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
585 # endif
586 11075 # define YYPTRDIFF_T ptrdiff_t
587 11075 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
588
4/10
✓ Branch 0 taken 11075 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11075 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 11075 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 11075 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
11075 # else
589 # define YYPTRDIFF_T long
590 # define YYPTRDIFF_MAXIMUM LONG_MAX
591 # endif
592 #endif
593 26005
594 26005 #ifndef YYSIZE_T
595
3/8
✓ Branch 0 taken 26005 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 26005 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 26005 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
26005 # ifdef __SIZE_TYPE__
596 # define YYSIZE_T __SIZE_TYPE__
597 # elif defined size_t
598 # define YYSIZE_T size_t
599 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
600 275791 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
601 275791 # define YYSIZE_T size_t
602 275791 # else
603 # define YYSIZE_T unsigned
604 9895774 # endif
605 #endif
606
607 #define YYSIZE_MAXIMUM \
608 YY_CAST (YYPTRDIFF_T, \
609 689756 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
610 689756 ? YYPTRDIFF_MAXIMUM \
611 689756 : YY_CAST (YYSIZE_T, -1)))
612
613 9206018 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
614
615
616 #ifndef YY_
617 # if defined YYENABLE_NLS && YYENABLE_NLS
618
2/6
✓ Branch 0 taken 30 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 30 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
30 # if ENABLE_NLS
619
2/6
✓ Branch 0 taken 507545 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 507545 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
507545 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
620
2/6
✓ Branch 0 taken 109158 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 109158 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
109158 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
621
2/6
✓ Branch 0 taken 815915 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 815915 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
815915 # endif
622
2/6
✓ Branch 0 taken 4779351 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4779351 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4779351 # endif
623
2/6
✓ Branch 0 taken 542604 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 542604 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
542604 # ifndef YY_
624
2/6
✓ Branch 0 taken 41545 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 41545 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
41545 # define YY_(Msgid) Msgid
625
2/6
✓ Branch 0 taken 10082 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10082 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
10082 # endif
626 #endif
627
628 3089544
629 3089544 #ifndef YYFREE
630
1/4
✓ Branch 0 taken 3089544 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
6179088 # define YYFREE free
631 #endif
632 #ifndef YYMALLOC
633 # define YYMALLOC malloc
634 #endif
635 #ifndef YYREALLOC
636 # define YYREALLOC realloc
637 2466 #endif
638 2466
639
3/8
✓ Branch 0 taken 2466 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2466 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2466 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2466 #ifdef __cplusplus
640 typedef bool yybool;
641 # define yytrue true
642 # define yyfalse false
643 #else
644 /* When we move to stdbool, get rid of the various casts to yybool. */
645 typedef signed char yybool;
646 # define yytrue 1
647 # define yyfalse 0
648 1116276 #endif
649
1/2
✓ Branch 0 taken 1116276 times.
✗ Branch 1 not taken.
1116276
650 #ifndef YYSETJMP
651 1116276 # include <setjmp.h>
652 1116276 # define YYJMP_BUF jmp_buf
653 # define YYSETJMP(Env) setjmp (Env)
654 4560799 /* Pacify Clang and ICC. */
655 4560799 # define YYLONGJMP(Env, Val) \
656 4560799 do { \
657
2/2
✓ Branch 0 taken 4396234 times.
✓ Branch 1 taken 164565 times.
4560799 longjmp (Env, Val); \
658 164565 YY_ASSERT (0); \
659 4560799 } while (yyfalse)
660 4560799 #endif
661
662 #ifndef YY_ATTRIBUTE_PURE
663 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
664 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
665 2837 # else
666 2837 # define YY_ATTRIBUTE_PURE
667 2837 # endif
668 2837 #endif
669 2837
670 #ifndef YY_ATTRIBUTE_UNUSED
671 4560799 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
672
2/6
✓ Branch 0 taken 4560799 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4560799 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4560799 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
673 # else
674
2/2
✓ Branch 0 taken 3392643 times.
✓ Branch 1 taken 1168156 times.
4560799 # define YY_ATTRIBUTE_UNUSED
675 1168156 # endif
676 #endif
677
678 /* The _Noreturn keyword of C11. */
679 #ifndef _Noreturn
680 # if (defined __cplusplus \
681 3390403 && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
682 3390403 || (defined _MSC_VER && 1900 <= _MSC_VER)))
683 3390403 # define _Noreturn [[noreturn]]
684 3390403 # elif ((!defined __cplusplus || defined __clang__) \
685 3390403 && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
686 2798383 || (!defined __STRICT_ANSI__ \
687 && (4 < __GNUC__ + (7 <= __GNUC_MINOR__) \
688 || (defined __apple_build_version__ \
689 ? 6000000 <= __apple_build_version__ \
690 : 3 < __clang_major__ + (5 <= __clang_minor__))))))
691 298641 /* _Noreturn works as-is. */
692 298641 # elif (2 < __GNUC__ + (8 <= __GNUC_MINOR__) || defined __clang__ \
693 298641 || 0x5110 <= __SUNPRO_C)
694 298641 # define _Noreturn __attribute__ ((__noreturn__))
695 298641 # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
696 # define _Noreturn __declspec (noreturn)
697 6188786 # else
698
2/6
✓ Branch 0 taken 6188786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6188786 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6188786 # define _Noreturn
699 # endif
700
2/4
✓ Branch 0 taken 6188786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6188786 times.
✗ Branch 3 not taken.
6188786 #endif
701
702 /* Suppress unused-variable warnings by "using" E. */
703
2/2
✓ Branch 0 taken 2628732 times.
✓ Branch 1 taken 3560054 times.
6188786 #if ! defined lint || defined __GNUC__
704 # define YY_USE(E) ((void) (E))
705 #else
706 # define YY_USE(E) /* empty */
707 #endif
708
709 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
710 3 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
711 3 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
712
2/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
713 _Pragma ("GCC diagnostic push") \
714 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
715 # else
716 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
717 _Pragma ("GCC diagnostic push") \
718 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
719 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
720 # endif
721 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
722 _Pragma ("GCC diagnostic pop")
723 34697 #else
724 34697 # define YY_INITIAL_VALUE(Value) Value
725 34697 #endif
726
2/6
✓ Branch 0 taken 263944 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 263944 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
263944 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
727 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
728 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
729 #endif
730 #ifndef YY_INITIAL_VALUE
731 # define YY_INITIAL_VALUE(Value) /* Nothing. */
732 #endif
733
734 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
735 # define YY_IGNORE_USELESS_CAST_BEGIN \
736 _Pragma ("GCC diagnostic push") \
737 34697 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
738
2/6
✓ Branch 0 taken 34697 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 34697 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
34697 # define YY_IGNORE_USELESS_CAST_END \
739 _Pragma ("GCC diagnostic pop")
740 #endif
741 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
742 # define YY_IGNORE_USELESS_CAST_BEGIN
743 # define YY_IGNORE_USELESS_CAST_END
744 #endif
745
746
747 #define YY_ASSERT(E) ((void) (0 && (E)))
748
749 15618 /* YYFINAL -- State number of the termination state. */
750
1/2
✓ Branch 0 taken 15618 times.
✗ Branch 1 not taken.
15618 #define YYFINAL 3
751 /* YYLAST -- Last index in YYTABLE. */
752 #define YYLAST 2674
753
754 /* YYNTOKENS -- Number of terminals. */
755 15618 #define YYNTOKENS 132
756 15618 /* YYNNTS -- Number of nonterminals. */
757 #define YYNNTS 119
758 /* YYNRULES -- Number of rules. */
759 #define YYNRULES 385
760 /* YYNSTATES -- Number of states. */
761 #define YYNSTATES 745
762 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */
763 #define YYMAXRHS 11
764 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle
765 accessed by $0, $-1, etc., in any rule. */
766 #define YYMAXLEFT 0
767
768 /* YYMAXUTOK -- Last valid token kind. */
769 #define YYMAXUTOK 386
770
771 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
772 as returned by yylex, with out-of-bounds checking. */
773 #define YYTRANSLATE(YYX) \
774 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
775 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
776 : YYSYMBOL_YYUNDEF)
777
778 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
779 as returned by yylex. */
780 static const yytype_uint8 yytranslate[] =
781 {
782 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
783 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
784 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
785 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
786 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
787 669108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
788
1/2
✓ Branch 0 taken 669108 times.
✗ Branch 1 not taken.
669108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
789 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
790 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
791 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
792 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
793
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 669108 times.
669108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
794 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
795 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
796 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
797 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
798 669108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
799 669108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
800 669108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
801 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
802 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
803 1603810 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
804 1603810 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
805
2/2
✓ Branch 0 taken 1527854 times.
✓ Branch 1 taken 75956 times.
1603810 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
806 75956 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
807 1603810 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
808 1603810 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
809 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
810 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
811 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
812 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
813 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
814 934715 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
815 934715 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
816 934715 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
817 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
818 702810 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
819 702810 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
820
4/18
✓ Branch 0 taken 702810 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 702810 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 702810 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 702810 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
1405620 125, 126, 127, 128, 129, 130, 131
821 };
822
823 1 #if YYDEBUG
824 1 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
825 1 static const yytype_int16 yyrline[] =
826 1 {
827 0, 306, 306, 312, 315, 320, 324, 325, 326, 327,
828 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
829 338, 349, 369, 422, 428, 439, 444, 452, 453, 454,
830 455, 456, 457, 458, 459, 460, 461, 462, 463, 473,
831 1618557 479, 488, 492, 496, 505, 515, 521, 526, 531, 536,
832 1618557 541, 546, 549, 552, 555, 558, 561, 570, 573, 581,
833 1618557 582, 585, 592, 599, 604, 608, 613, 618, 619, 620,
834 1618557 621, 622, 623, 624, 625, 627, 636, 647, 653, 664,
835 1618557 670, 680, 686, 690, 696, 709, 722, 726, 730, 736,
836 1618557 747, 758, 774, 785, 802, 812, 817, 822, 829, 837,
837 851, 856, 864, 870, 875, 876, 877, 881, 891, 899,
838 909, 918, 921, 932, 933, 937, 943, 953, 958, 969,
839 19022 974, 979, 984, 998, 1008, 1021, 1035, 1039, 1040, 1044,
840 19022 1045, 1046, 1047, 1048, 1059, 1259, 1272, 1279, 1280, 1284,
841 19022 1290, 1300, 1305, 1313, 1314, 1315, 1316, 1317, 1318, 1319,
842 19022 1327, 1331, 1338, 1343, 1348, 1353, 1359, 1365, 1375, 1392,
843 19022 1393, 1394, 1395, 1397, 1398, 1399, 1400, 1401, 1402, 1403,
844
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 19022 times.
19022 1404, 1405, 1406, 1407, 1408, 1413, 1414, 1419, 1420, 1421,
845 19022 1426, 1427, 1428, 1430, 1431, 1432, 1433, 1434, 1435, 1436,
846 19022 1437, 1438, 1439, 1440, 1445, 1446, 1451, 1452, 1456, 1457,
847 19022 1461, 1466, 1473, 1478, 1486, 1487, 1495, 1499, 1504, 1508,
848 1516, 1523, 1530, 1540, 1545, 1549, 1554, 1561, 1566, 1571,
849 1578, 1585, 1586, 1590, 1595, 1603, 1615, 1631, 1640, 1653,
850 1677, 1681, 1682, 1686, 1694, 1701, 1705, 1714, 1723, 1731,
851 1740, 1749, 1760, 1761, 1765, 1769, 1774, 1780, 1790, 1794,
852
2/6
✓ Branch 0 taken 19022 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 19022 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
19022 1799, 1805, 1815, 1822, 1825, 1829, 1837, 1838, 1846, 1852,
853 1904, 1909, 1910, 1911, 1912, 1916, 1917, 1926, 1934, 1942,
854 1950, 1961, 1969, 1977, 1984, 1992, 2003, 2012, 2016, 2017,
855 2021, 2028, 2035, 2041, 2050, 2056, 2068, 2069, 2070, 2072,
856 2082, 2090, 2096, 2098, 2100, 2102, 2104, 2107, 2110, 2112,
857 2114, 2116, 2118, 2120, 2123, 2125, 2128, 2130, 2132, 2134,
858 2137, 2139, 2141, 2144, 2146, 2148, 2151, 2153, 2155, 2157,
859 2159, 2162, 2164, 2166, 2168, 2170, 2173, 2175, 2178, 2180,
860 2183, 2185, 2188, 2190, 2193, 2195, 2198, 2200, 2209, 2210,
861 2217, 2219, 2221, 2226, 2231, 2236, 2241, 2246, 2251, 2256,
862 2262, 2268, 2273, 2278, 2283, 2289, 2292, 2299, 2305, 2316,
863 2321, 2326, 2331, 2336, 2341, 2346, 2351, 2356, 2366, 2369,
864 2372, 2376, 2377, 2378, 2379, 2383, 2390, 2396, 2400, 2409,
865 2084909 2410, 2415, 2427, 2438, 2445, 2450
866 2084909 };
867 2084909 #endif
868 2084909
869 2084909 #define YYPACT_NINF (-608)
870 #define YYTABLE_NINF (-357)
871 1313836
872
2/6
✓ Branch 0 taken 1313836 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1313836 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1313836 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
873 STATE-NUM. */
874 static const yytype_int16 yypact[] =
875 123831 {
876 928 -608, 47, 1687, -608, 54, -42, -39, 359, 1503, 45,
877
2/6
✓ Branch 0 taken 198984 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 198984 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
198984 106, 59, 97, 100, 542, 1490, 542, 542, 91, -608,
878 -608, -608, -608, -608, -608, -608, -608, -608, 109, 13,
879 201, -608, -608, 185, 194, -608, -608, -608, 198, 206,
880 -608, -608, 37, -608, -608, 210, 239, -608, -608, -608,
881 -608, 324, -10, -608, 251, 213, -608, 90, 295, 301,
882 3713969 328, -608, 218, -608, 294, -608, -608, -608, 4, 2389,
883 3713969 213, 1503, 317, 321, 298, 298, 59, 375, 542, 37,
884
2/6
✓ Branch 0 taken 3713969 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3713969 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3713969 -608, -608, -608, -608, -608, 2389, 336, 283, 285, 357,
885 32, -608, -608, -608, -608, -608, 401, -608, 10, -608,
886 203, 103, 169, -608, -608, 334, 344, -608, -608, -608,
887 -608, 213, 213, 213, 213, 213, 213, 213, 213, 353,
888 2514, -608, -608, -608, -608, 411, 424, 59, 2389, 2389,
889 2389, 2419, 2419, 2419, 2419, 2419, 1503, -608, -608, -608,
890 -608, 430, 431, -608, -608, -608, 432, 273, -608, 421,
891 291, 242, 299, 307, 160, 408, 409, 407, 412, 58,
892 190462 -608, 1850, -608, -608, 440, -608, 376, -608, -608, -608,
893 190462 -608, 27, -608, 202, 213, 1628, -608, 59, 128, 40,
894 190462 -608, -608, 2389, 1836, 1860, 213, -608, 2389, 2389, -608,
895 190462 -608, 492, 1064, -608, 382, 213, 442, -608, -608, -608,
896 190462 -608, -608, -608, -608, -608, -608, -608, 450, 2081, -608,
897 190462 59, 387, 457, -608, 459, 460, -608, -608, -608, 2549,
898 190462 -608, -608, 461, -608, 462, 103, 392, 390, 466, -608,
899 467, -608, 151, -608, -608, -608, -608, -608, 104, 2200,
900 123831 2389, 394, -608, -608, 2419, 2419, 2419, 2419, 2419, 2419,
901 123831 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419,
902
2/6
✓ Branch 0 taken 123831 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 123831 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
123831 2419, 2419, 2419, 2419, 2419, 2419, 2389, 2389, 2389, 2389,
903 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389,
904 1736, -608, 213, -608, 213, 171, 469, -608, -608, 1794,
905 -608, 474, -608, 476, 478, 479, 480, -608, -608, -608,
906 -608, 481, -608, 413, -608, -608, 260, 482, 483, -5,
907 485, 277, 302, 313, 318, 329, 343, -608, 184, -608,
908 -608, 2389, 487, 488, 489, 490, 2389, 494, -13, 28,
909 1445, 495, 498, 489, 499, 703, -608, 1064, -608, 486,
910
2/6
✓ Branch 0 taken 928 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 928 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
928 -608, 504, 506, 35, 508, 81, -608, -608, 1191, -608,
911 -608, -608, -608, -608, -608, -608, -608, -608, 535, -608,
912 -608, -608, 511, 512, 513, 38, -608, 515, 1503, 35,
913 514, 9, -608, -608, 94, -608, 1127, -608, 2389, -608,
914 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
915 -608, 516, 517, 2220, -608, 2389, -608, 2389, 337, -608,
916 153, -608, 509, -608, -608, 421, 421, 421, 291, 291,
917 242, 242, 299, 299, 299, 299, 307, 307, 307, 307,
918 32897 160, 408, 409, 407, 518, 412, -608, -608, -608, -608,
919 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
920 416, -608, -608, 177, -608, 2389, -608, -608, -608, -608,
921 -608, -608, -608, -608, -608, 1, 519, 524, -608, -608,
922 32896 -608, 444, -608, -608, -608, -608, -608, -608, -608, -608,
923 32896 -608, -608, -608, -608, 2389, -608, 523, 1572, 1954, 2023,
924 32896 -608, 2389, -608, 2389, -608, 530, -608, 540, 50, -608,
925 32896 2389, 2389, -608, 2389, 544, -608, -608, -608, -608, -608,
926 32896 -608, -608, -608, 1445, -608, -608, -608, -608, -608, -608,
927
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 32896 times.
32896 -608, 382, 2389, 213, 538, 547, -608, 555, -608, 556,
928 32896 557, 558, -608, 1254, -608, 559, 567, -608, -608, -608,
929 161, -608, 570, -608, -608, 2389, -608, -608, 2419, -608,
930 575, -608, -608, -608, 577, -608, -608, 507, 510, -608,
931 -608, 563, -608, -608, -608, -608, -608, -608, -608, -608,
932 32891 -608, -608, 415, -608, 2389, 1445, 2389, 415, 60, 264,
933
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 222, 35, 580, 582, 583, 584, -608, -608, 586, 587,
934 589, 590, 592, -608, -608, 594, -608, 382, 2389, -608,
935 -608, -608, -608, -608, -608, -608, -608, 759, -608, 571,
936 -608, -608, 1012, -608, -608, -608, 2389, -608, -608, 2389,
937 233, -608, 602, 2297, 415, 2389, 2389, 2389, 2389, 2389,
938 1678628 2389, 1445, 564, 1445, 1445, 593, 1445, 2389, 2389, 1572,
939 1678628 1445, 1445, 1503, 598, 601, -608, 600, -608, 607, 618,
940 1678628 2389, 2389, 261, 2297, -608, -608, -608, -608, -608, 624,
941 1678628 -608, 2389, 562, 676, 463, 678, 630, 631, -608, 683,
942 1678628 -608, 603, -608, -608, 1381, 2320, 1572, 1445, 214, 270,
943 2389, 1445, 262, 1445, -608, 1445, 1445, 2100, 636, 75,
944 894, 1445, 687, 689, 1445, -608, -608, 181, -608, 290,
945 690, -608, -608, -608, -608, 640, -608, 2389, 1445, -608,
946 -608, -608, 645, 264, 646, 647, -608, -608, -608, 894,
947 2123, 649, 1318, -608, 1445, 1445, -608, -608, 1572, 1445,
948 1445, 1445, 650, -608, -608, -608, -608, 1318, 652, 659,
949 665, -608, -608, -608, -608, 698, -608, -608, 1445, -608,
950 -608, -608, 1445, -608, -608
951 };
952
953 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
954 830 Performed when YYTABLE does not specify something else to do. Zero
955 830 means the default is an error. */
956 830 static const yytype_int16 yydefact[] =
957 830 {
958 5, 0, 2, 1, 0, 0, 0, 0, 0, 0,
959 4 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
960 4 68, 69, 70, 71, 72, 73, 74, 260, 0, 0,
961
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
4 277, 3, 8, 0, 0, 6, 7, 4, 0, 0,
962 59, 60, 0, 64, 66, 0, 0, 12, 15, 14,
963 13, 0, 0, 151, 0, 0, 75, 261, 262, 263,
964 264, 276, 0, 111, 0, 41, 277, 65, 0, 0,
965 0, 0, 0, 0, 265, 266, 0, 0, 0, 0,
966 92, 77, 93, 91, 90, 0, 0, 0, 0, 0,
967 4 0, 17, 18, 19, 9, 63, 78, 80, 82, 94,
968 4 0, 0, 84, 10, 11, 0, 0, 136, 134, 16,
969 273, 0, 0, 0, 0, 0, 0, 0, 0, 0,
970
2/6
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
10 0, 112, 61, 379, 380, 0, 0, 0, 0, 0,
971 0, 0, 0, 0, 0, 0, 0, 377, 370, 368,
972 369, 286, 0, 295, 289, 292, 297, 298, 304, 306,
973 310, 313, 316, 321, 326, 328, 330, 332, 334, 336,
974 338, 340, 355, 357, 0, 287, 378, 371, 372, 373,
975 259, 0, 84, 0, 0, 0, 39, 0, 0, 0,
976 42, 44, 0, 0, 0, 0, 87, 0, 0, 83,
977 96, 0, 0, 95, 106, 0, 0, 150, 267, 269,
978 268, 271, 274, 270, 275, 272, 76, 0, 0, 114,
979 0, 0, 0, 120, 0, 0, 126, 128, 124, 0,
980
2/6
✓ Branch 0 taken 32882 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 32882 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
32882 121, 122, 0, 119, 0, 75, 0, 0, 0, 339,
981 0, 385, 0, 299, 300, 302, 303, 301, 0, 0,
982 0, 0, 293, 294, 0, 0, 0, 0, 0, 0,
983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
986 0, 376, 0, 256, 0, 0, 0, 21, 27, 0,
987 25, 0, 26, 0, 0, 0, 0, 31, 34, 33,
988 32, 0, 40, 0, 57, 157, 0, 0, 0, 0,
989 0, 0, 0, 0, 0, 0, 0, 79, 0, 89,
990 81, 0, 0, 0, 0, 0, 254, 0, 0, 0,
991 0, 0, 0, 0, 0, 0, 177, 0, 199, 0,
992 203, 0, 0, 0, 0, 0, 202, 164, 0, 165,
993 166, 167, 221, 222, 168, 230, 231, 232, 235, 169,
994 170, 171, 0, 0, 0, 286, 356, 0, 0, 0,
995 0, 103, 104, 105, 0, 100, 0, 135, 0, 123,
996 125, 131, 132, 129, 113, 116, 117, 118, 115, 127,
997 130, 0, 0, 0, 288, 0, 383, 0, 0, 282,
998 0, 285, 0, 291, 305, 307, 308, 309, 311, 312,
999 33702 314, 315, 318, 317, 320, 319, 322, 323, 325, 324,
1000
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 33702 times.
33702 327, 329, 331, 333, 0, 335, 341, 342, 343, 344,
1001 345, 346, 347, 348, 349, 351, 352, 353, 354, 350,
1002 0, 20, 258, 0, 62, 0, 22, 23, 24, 36,
1003 37, 28, 29, 30, 35, 0, 0, 0, 153, 154,
1004 152, 0, 55, 56, 53, 54, 51, 52, 49, 50,
1005 33702 47, 48, 45, 46, 0, 86, 0, 196, 0, 0,
1006 33702 204, 0, 253, 0, 173, 0, 175, 0, 0, 158,
1007 33702 0, 0, 205, 0, 385, 162, 179, 160, 159, 229,
1008 198, 201, 200, 0, 172, 178, 161, 163, 110, 107,
1009 33712 98, 106, 0, 0, 0, 0, 138, 0, 142, 0,
1010
2/6
✓ Branch 0 taken 33712 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 33712 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
33712 0, 0, 144, 0, 141, 0, 0, 374, 375, 280,
1011 0, 384, 0, 286, 290, 0, 283, 296, 0, 257,
1012 0, 58, 155, 156, 0, 88, 97, 192, 194, 181,
1013
1/2
✓ Branch 0 taken 33712 times.
✗ Branch 1 not taken.
33712 180, 0, 184, 185, 186, 187, 188, 189, 190, 191,
1014 197, 182, 276, 183, 0, 0, 0, 277, 0, 0,
1015 0, 0, 0, 0, 0, 0, 174, 176, 0, 0,
1016 0, 0, 0, 234, 102, 109, 101, 106, 0, 147,
1017 148, 145, 143, 137, 140, 139, 146, 0, 281, 0,
1018 284, 337, 0, 43, 193, 195, 0, 242, 243, 0,
1019 0, 233, 0, 0, 0, 0, 0, 0, 0, 0,
1020 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
1021 0, 0, 0, 0, 0, 133, 0, 38, 0, 0,
1022 4 0, 0, 0, 0, 359, 361, 362, 360, 363, 0,
1023
2/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4 241, 0, 206, 208, 0, 244, 0, 0, 255, 246,
1024 252, 0, 108, 99, 0, 0, 196, 0, 0, 0,
1025 0, 0, 0, 0, 85, 0, 0, 0, 0, 0,
1026
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 0, 0, 248, 250, 0, 149, 382, 0, 224, 0,
1027 227, 367, 366, 365, 364, 0, 240, 0, 0, 238,
1028 207, 209, 0, 357, 0, 0, 358, 220, 210, 0,
1029 0, 0, 212, 245, 0, 0, 247, 381, 196, 0,
1030 0, 0, 0, 239, 219, 217, 218, 211, 0, 0,
1031 0, 214, 249, 251, 223, 225, 228, 237, 0, 216,
1032 213, 215, 0, 236, 226
1033 };
1034
1035 1104040 /* YYPGOTO[NTERM-NUM]. */
1036 static const yytype_int16 yypgoto[] =
1037 {
1038 -608, -608, -608, 447, 19, -608, -280, 78, -608, -608,
1039 1104040 -608, -1, 79, 6, -608, -608, 136, -608, 721, 20,
1040 2, -608, -31, -608, -608, -608, -608, 36, -17, -608,
1041 574598 -608, -474, -349, 98, -608, -608, 22, -608, -608, 39,
1042 574598 525, -608, -212, 24, 16, 667, -608, -608, -489, 14,
1043 574598 625, 149, -189, -578, -98, -607, -457, 399, -450, -608,
1044 55, -447, -608, -608, -608, -438, 410, -608, -608, -608,
1045 -502, -429, -428, -608, -403, -399, 21, -142, 249, -2,
1046 -40, -608, 18, -608, 17, -7, -608, -608, 342, -608,
1047 339, -608, -608, -76, 211, 232, 235, 166, 187, 496,
1048 500, 484, 502, 501, -608, -254, 629, 1782, 367, -387,
1049 -52, 49, -411, -608, -148, -608, -608, -608, 102
1050 };
1051
1052 /* YYDEFGOTO[NTERM-NUM]. */
1053 static const yytype_int16 yydefgoto[] =
1054 {
1055 0, 1, 2, 31, 288, 289, 290, 339, 34, 35,
1056 36, 340, 341, 342, 40, 41, 343, 43, 44, 295,
1057 344, 96, 170, 98, 572, 189, 318, 82, 218, 100,
1058 374, 370, 371, 372, 373, 64, 298, 121, 219, 220,
1059 221, 222, 223, 299, 300, 51, 377, 523, 524, 345,
1060 38 53, 488, 489, 551, 347, 348, 349, 480, 350, 679,
1061 38 680, 351, 689, 352, 353, 354, 355, 356, 357, 358,
1062
1/2
✓ Branch 0 taken 38 times.
✗ Branch 1 not taken.
38 609, 359, 360, 361, 362, 363, 364, 171, 55, 141,
1063 73, 57, 58, 59, 60, 61, 142, 143, 400, 144,
1064 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1065 155, 156, 157, 158, 159, 160, 161, 162, 366, 367,
1066 164, 705, 706, 165, 166, 167, 168, 169, 232
1067 };
1068
1069 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1070 positive, shift that token. If negative, reduce the rule whose
1071 number is the opposite. If YYTABLE_NINF, syntax error. */
1072 static const yytype_int16 yytable[] =
1073 {
1074 56, 37, 193, 346, 46, 56, 56, 388, 39, 447,
1075 424, 97, 56, 56, 56, 56, 52, 81, 50, 508,
1076 553, 32, 45, 54, 48, 99, 49, 554, 75, 74,
1077 555, 309, 285, 178, 595, 102, 176, 584, 47, 556,
1078 101, 484, 106, 183, 87, 88, 89, 3, 557, 558,
1079 80, 658, 83, 84, 460, 233, 234, 235, 236, 237,
1080 541, 511, 99, 172, 95, 613, 578, 570, 108, 56,
1081 186, 187, 110, 712, 559, 62, 56, 101, 560, 282,
1082 33, 38, 486, 63, 579, 677, 678, 323, 688, 65,
1083 563, 283, 27, 75, 74, 95, -279, 95, -75, 305,
1084 512, 188, 727, 69, 198, 199, 200, 201, 202, 203,
1085 204, 205, 643, 633, 27, 107, 306, 485, 225, 213,
1086 95, 281, 216, 264, 76, 228, 215, 281, 77, 122,
1087 310, 313, 316, 106, 56, 319, 90, 302, 42, 708,
1088 734, 224, 443, 111, 68, 27, 513, 265, 346, 85,
1089 79, 42, 79, 79, 317, 455, 217, 184, 487, 502,
1090 66, 194, 66, -75, 95, 397, 137, 172, 404, 70,
1091 307, 308, 553, 56, 292, 685, 514, 296, 172, 554,
1092 303, 294, 555, 195, 66, 614, 398, 304, 375, 52,
1093 365, 556, 56, 380, 75, 74, 301, 71, 212, 214,
1094 557, 558, 642, 395, -136, 535, 225, 173, 101, 553,
1095 81, 297, 536, 535, 79, 396, 554, 225, 385, 555,
1096 598, 216, -276, 282, -276, 215, 559, -276, 556, 282,
1097 560, 72, 672, 395, 86, 444, 474, 557, 558, 91,
1098 224, 539, 563, 256, 257, 717, 475, 379, 92, -276,
1099 258, 442, 93, 291, 293, 217, 42, 190, 386, 191,
1100 94, 553, 95, 559, 103, 284, 192, 560, 554, 476,
1101 259, 555, 238, 691, 620, 172, 692, 172, 56, 563,
1102 556, 621, 46, 661, 601, 640, 39, 56, 448, 557,
1103 558, 296, 394, 104, 52, 294, 50, 212, 214, 32,
1104 45, 54, 48, 52, 49, 109, 112, 114, 116, 118,
1105 301, 42, 97, 670, 697, 559, 47, 248, 249, 560,
1106 671, 698, 637, 114, 118, 297, 526, 105, 365, 693,
1107 369, 563, 694, 56, 240, 365, 172, 81, 66, 241,
1108 242, 243, 718, 107, 42, 532, 365, 501, 113, 719,
1109 27, 123, 124, 27, 115, 42, 27, 120, 33, 38,
1110 125, 126, 509, 245, 246, 247, 56, 291, 293, 615,
1111 616, 617, 618, 619, 56, 518, 250, 251, 521, 552,
1112 174, 117, 520, 27, 175, 635, 252, 253, 254, 255,
1113 456, 457, 27, 540, 179, 129, 533, 525, 462, 463,
1114 130, 7, 177, 19, 20, 21, 22, 23, 24, 25,
1115 26, 180, 522, 181, 27, 182, 42, 136, 412, 413,
1116 414, 415, 545, 464, 465, 42, 19, 20, 21, 22,
1117 23, 24, 25, 26, 466, 467, 163, 27, 580, 468,
1118 469, 582, 660, 416, 417, 418, 419, 87, 88, 89,
1119 470, 471, 163, 185, 517, 519, 405, 406, 407, 196,
1120 585, 28, 66, 137, 472, 473, 138, 139, 140, 226,
1121 562, 607, 608, 677, 678, 365, 365, 365, 206, 550,
1122 408, 409, 227, 549, 66, 410, 411, 368, -279, 239,
1123 -278, 346, 244, 260, 262, 261, 230, 231, 561, 280,
1124 263, 365, 281, 321, 369, 376, 586, 66, 378, 56,
1125 90, 381, 42, 382, 383, 389, 390, 391, 392, 403,
1126 346, 56, 594, 502, 393, 521, 394, 445, 449, 520,
1127 450, 552, 451, 452, 453, 454, 634, 461, 502, 137,
1128 495, 458, 459, 503, 525, 477, 478, 479, 481, 163,
1129 163, 163, 483, 490, 163, 320, 491, 493, 496, 522,
1130 497, 7, 498, 365, 622, 504, 505, 506, 552, 507,
1131 675, 537, 544, 510, 538, 527, 528, 546, 542, 14,
1132 78, 16, 17, 543, 576, 56, 19, 20, 21, 22,
1133 23, 24, 25, 26, 577, 56, 587, 27, -356, 216,
1134 56, 517, 519, 215, 296, 588, 401, 402, 294, 589,
1135 590, 591, 592, 596, 568, 571, 52, 606, 224, 365,
1136 552, 365, 365, 301, 365, 704, 597, 365, 365, 365,
1137 56, 550, 599, 217, 602, 549, 603, 604, 297, 623,
1138 605, 624, 625, 626, 627, 628, 632, 369, 629, 630,
1139 561, 631, 583, 636, 641, 651, 654, 663, 729, 42,
1140 664, 666, 56, 665, 365, 365, 521, 66, 550, 365,
1141 520, 365, 549, 365, 365, 212, 214, 667, 365, 365,
1142 291, 293, 365, 673, 676, 525, 681, 561, 163, 682,
1143 683, 684, 707, 482, 512, 714, 365, 715, 720, 721,
1144 522, 724, 725, 726, 494, 731, 742, 365, 739, 738,
1145 365, 501, 365, 365, 611, 740, 365, 365, 365, 365,
1146 550, 741, 7, 369, 549, 365, 501, 441, 67, 119,
1147 662, 197, 492, 42, 709, 530, 365, 534, 42, 561,
1148 365, 335, 517, 519, 387, 163, 422, 19, 20, 21,
1149 22, 23, 24, 25, 26, 499, 420, 229, 27, 730,
1150 401, 421, 531, 0, 163, 423, 425, 687, 369, 0,
1151 650, 0, 652, 653, 0, 655, 0, 0, 7, 659,
1152 8, 207, 0, 0, 0, 10, 0, 12, 0, 0,
1153 0, 0, 0, 0, 0, 0, 14, 15, 16, 17,
1154 42, 0, 18, 19, 20, 21, 22, 23, 24, 25,
1155 26, 0, 163, 0, 27, 0, 690, 0, 0, 0,
1156 696, 0, 699, 0, 700, 701, 0, 0, 66, 0,
1157 713, 0, 0, 716, 0, 0, 0, 0, 0, 0,
1158 0, 163, 0, 0, 0, 569, 573, 723, 574, 0,
1159 575, 0, 0, 0, 0, 0, 0, 163, 581, 0,
1160 163, 0, 0, 732, 733, 0, 0, 0, 735, 736,
1161 737, 0, 0, 0, 0, 0, 0, 0, 0, 163,
1162 0, 0, 0, 0, 66, 0, 0, 743, 0, 0,
1163 0, 744, 0, 0, 0, 0, 0, 0, 0, 322,
1164 323, 324, 600, 325, 710, 711, 326, 0, 123, 124,
1165 327, 328, 329, 7, 330, 8, 331, 125, 126, 0,
1166 10, 0, 12, 0, 0, 0, 0, 0, 332, 333,
1167 334, 610, 335, 612, 0, 127, 128, 18, 19, 20,
1168 21, 22, 23, 24, 25, 26, 0, 0, 336, 27,
1169 0, 0, 129, 0, 0, 163, 0, 337, 0, 0,
1170 0, 131, 132, 133, 134, 0, 0, 0, 0, 0,
1171 135, 0, 0, 638, 136, 0, 639, 0, 0, 0,
1172 569, 0, 644, 645, 646, 647, 648, 649, 0, 0,
1173 0, 0, 0, 0, 656, 657, 0, 0, 0, 0,
1174 0, 0, 0, 0, 0, 0, 0, 668, 669, 0,
1175 569, 28, 0, 0, 211, 4, 5, 0, 674, 66,
1176 137, 0, 0, 138, 139, 140, 0, 0, 0, 0,
1177 0, 7, 231, 8, 286, 0, 0, 695, 10, 11,
1178 12, 0, 0, 0, 703, 0, 0, 0, 0, 14,
1179 15, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1180 23, 24, 25, 26, 722, 0, 0, 27, 0, 322,
1181 323, 324, 0, 325, 0, 0, 326, 703, 123, 124,
1182 327, 328, 329, 7, 330, 8, 331, 125, 126, 0,
1183 10, 0, 12, 0, 0, 0, 0, 0, 332, 333,
1184 334, 0, 335, 0, 0, 127, 128, 18, 19, 20,
1185 21, 22, 23, 24, 25, 26, 0, 0, 336, 27,
1186 0, 0, 129, 0, 0, 0, 0, 337, 338, 28,
1187 0, 131, 132, 133, 134, 0, 0, 30, 0, 0,
1188 135, 0, 0, 0, 136, 0, 7, 0, 8, 515,
1189 0, 0, 0, 10, 0, 12, 0, 0, 0, 0,
1190 0, 0, 0, 0, 14, 15, 16, 17, 0, 0,
1191 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1192 0, 28, 27, 0, 211, 0, 0, 0, 0, 66,
1193 137, 516, 0, 138, 139, 140, 322, 323, 324, 0,
1194 325, 0, 0, 326, 0, 123, 124, 327, 328, 329,
1195 7, 330, 8, 331, 125, 126, 0, 10, 0, 12,
1196 0, 0, 0, 0, 0, 332, 333, 334, 0, 335,
1197 0, 0, 127, 128, 18, 19, 20, 21, 22, 23,
1198 24, 25, 26, 0, 0, 336, 27, 211, 0, 129,
1199 0, 0, 66, 0, 337, 500, 0, 0, 131, 132,
1200 133, 134, 0, 0, 0, 0, 0, 135, 0, 0,
1201 0, 136, 0, 7, 0, 8, 515, 0, 0, 0,
1202 10, 0, 12, 0, 0, 0, 0, 0, 0, 0,
1203 0, 14, 15, 16, 17, 0, 0, 18, 19, 20,
1204 21, 22, 23, 24, 25, 26, 0, 0, 28, 27,
1205 0, 211, 0, 0, 0, 0, 66, 137, 593, 0,
1206 138, 139, 140, 322, 323, 324, 0, 325, 0, 0,
1207 326, 0, 123, 124, 327, 328, 329, 7, 330, 8,
1208 331, 125, 126, 0, 10, 0, 12, 0, 0, 0,
1209 0, 0, 332, 333, 334, 0, 335, 0, 0, 127,
1210 128, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1211 0, 0, 336, 27, 211, 0, 129, 0, 0, 66,
1212 0, 337, 0, 0, 0, 131, 132, 133, 134, 0,
1213 0, 0, 0, 0, 135, 0, 0, 0, 136, 0,
1214 7, 0, 8, 515, 0, 0, 0, 10, 0, 12,
1215 0, 0, 0, 0, 0, 0, 0, 0, 14, 15,
1216 16, 17, 0, 0, 18, 19, 20, 21, 22, 23,
1217 24, 25, 26, 0, 0, 28, 27, 0, 211, 0,
1218 0, 0, 0, 66, 137, 0, 0, 138, 139, 140,
1219 322, 323, 324, 0, 325, 0, 0, 326, 0, 123,
1220 124, 327, 328, 329, 7, 330, 8, 331, 125, 126,
1221 0, 10, 0, 12, 0, 0, 0, 0, 0, 332,
1222 333, 334, 0, 335, 0, 0, 127, 128, 18, 19,
1223 20, 21, 22, 23, 24, 25, 26, 0, 0, 336,
1224 27, 0, 0, 129, 0, 0, 66, 0, 337, 7,
1225 0, 0, 131, 132, 133, 134, 0, 0, 0, 0,
1226 0, 135, 7, 0, 0, 136, 0, 14, 15, 16,
1227 17, 0, 0, 0, 19, 20, 21, 22, 23, 24,
1228 25, 26, 0, 0, 0, 27, 0, 19, 20, 21,
1229 22, 23, 24, 25, 26, 0, 0, 0, 27, 0,
1230 0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
1231 66, 137, 0, 0, 138, 139, 140, 322, 323, 324,
1232 0, 325, 0, 0, 326, 0, 123, 124, 327, 547,
1233 548, 7, 330, 8, 331, 125, 126, 0, 10, 0,
1234 0, 0, 0, 0, 0, 0, 332, 333, 0, 0,
1235 335, 0, 0, 127, 128, 66, 19, 20, 21, 22,
1236 23, 24, 25, 26, 0, 0, 0, 27, 66, 0,
1237 129, 4, 5, 0, 0, 337, 0, 0, 0, 131,
1238 132, 133, 134, 0, 0, 0, 0, 7, 135, 8,
1239 286, 0, 136, 0, 10, 11, 12, 0, 0, 0,
1240 0, 0, 0, 0, 0, 14, 15, 16, 17, 0,
1241 0, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1242 0, 0, 0, 27, 0, 0, 0, 0, 0, 28,
1243 4, 5, 287, 0, 0, 0, 0, 66, 137, 0,
1244 6, 138, 139, 140, 0, 0, 7, 0, 8, 9,
1245 0, 0, 0, 10, 11, 12, 13, 0, 0, 0,
1246 0, 0, 0, 0, 14, 15, 16, 17, 0, 0,
1247 18, 19, 20, 21, 22, 23, 24, 25, 26, 4,
1248 5, 0, 27, 0, 0, 28, 0, 0, 211, 6,
1249 0, 0, 0, 30, 0, 7, 0, 8, 9, 0,
1250 0, 0, 10, 11, 12, 13, 0, 0, 0, 0,
1251 0, 0, 0, 14, 15, 16, 17, 0, 0, 18,
1252 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
1253 0, 27, 0, 0, 0, 0, 0, 4, 5, 0,
1254 0, 0, 0, 0, 28, 0, 0, 29, 0, 0,
1255 0, 0, 30, 7, 0, 8, 286, 0, 0, 0,
1256 10, 11, 12, 0, 0, 0, 0, 0, 0, 0,
1257 0, 14, 15, 16, 17, 0, 0, 18, 19, 20,
1258 21, 22, 23, 24, 25, 26, 0, 311, 0, 27,
1259 123, 124, 0, 28, 0, 0, 440, 0, 446, 125,
1260 3529 126, 30, 0, 0, 0, 0, 0, 0, 0, 0,
1261 3529 0, 314, 0, 0, 123, 124, 0, 127, 128, 0,
1262 3529 0, 0, 0, 125, 126, 0, 0, 0, 0, 0,
1263 3529 0, 27, 0, 0, 129, 0, 0, 0, 0, 130,
1264 3529 0, 127, 128, 131, 132, 133, 134, 0, 0, 0,
1265 3529 0, 28, 135, 0, 211, 27, 136, 0, 129, 30,
1266 3529 0, 0, 0, 130, 0, 0, 0, 131, 132, 133,
1267 3529 134, 0, 0, 0, 0, 0, 135, 0, 0, 0,
1268 136, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1269 275, 276, 277, 278, 0, 0, 0, 0, 0, 0,
1270 312, 66, 137, 279, 0, 138, 139, 140, 123, 124,
1271 0, 0, 0, 7, 0, 0, 0, 125, 126, 0,
1272 0, 0, 0, 0, 315, 66, 137, 0, 0, 138,
1273 6000 139, 140, 0, 0, 0, 127, 128, 0, 19, 20,
1274
3/8
✓ Branch 0 taken 6000 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6000 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6000 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
6000 21, 22, 23, 24, 25, 26, 0, 0, 0, 27,
1275 0, 0, 564, 565, 0, 566, 0, 130, 0, 0,
1276 0, 131, 132, 133, 134, 0, 0, 0, 0, 0,
1277 135, 0, 0, 0, 136, 0, 0, 123, 124, 0,
1278 0, 0, 7, 0, 0, 0, 125, 126, 426, 427,
1279 3528 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
1280
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 438, 439, 0, 0, 127, 128, 0, 19, 20, 21,
1281 22, 23, 24, 25, 26, 0, 0, 0, 27, 567,
1282 137, 129, 0, 138, 139, 140, 130, 0, 0, 0,
1283 131, 132, 133, 134, 0, 0, 0, 0, 0, 135,
1284 7, 0, 0, 136, 0, 0, 0, 0, 0, 0,
1285 797 0, 0, 0, 0, 123, 124, 0, 0, 14, 208,
1286 797 16, 17, 0, 125, 126, 19, 20, 21, 22, 23,
1287 797 24, 25, 26, 0, 0, 0, 27, 123, 124, 0,
1288 797 0, 127, 128, 0, 0, 0, 125, 126, 66, 137,
1289 797 0, 0, 138, 139, 140, 27, 0, 0, 564, 0,
1290 0, 566, 0, 130, 127, 128, 0, 131, 132, 133,
1291 134, 0, 0, 0, 0, 0, 135, 0, 27, 0,
1292 136, 564, 0, 0, 566, 0, 130, 0, 0, 0,
1293 131, 132, 133, 134, 0, 0, 0, 0, 0, 135,
1294 0, 0, 0, 136, 0, 0, 66, 0, 0, 0,
1295 0, 0, 0, 0, 123, 124, 0, 0, 0, 0,
1296 0, 0, 0, 125, 126, 66, 137, 702, 0, 138,
1297 139, 140, 0, 0, 123, 124, 0, 0, 0, 0,
1298 0, 127, 128, 125, 126, 0, 0, 0, 66, 137,
1299 728, 0, 138, 139, 140, 27, 0, 0, 129, 399,
1300 0, 127, 128, 130, 0, 0, 0, 131, 132, 133,
1301
2/6
✓ Branch 0 taken 3529 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3529 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3529 134, 0, 0, 0, 0, 27, 135, 0, 129, 529,
1302 136, 0, 0, 130, 0, 0, 0, 131, 132, 133,
1303 134, 0, 0, 0, 0, 0, 135, 0, 0, 0,
1304 136, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1305 0, 123, 124, 0, 0, 0, 0, 0, 0, 0,
1306 125, 126, 0, 0, 0, 66, 137, 0, 0, 138,
1307 139, 140, 0, 0, 123, 124, 0, 0, 127, 128,
1308 0, 0, 0, 125, 126, 66, 137, 0, 0, 138,
1309 139, 140, 27, 0, 0, 564, 0, 0, 566, 0,
1310 130, 127, 128, 0, 131, 132, 133, 134, 0, 0,
1311 0, 0, 0, 135, 0, 27, 0, 136, 129, 0,
1312 0, 0, 0, 130, 686, 0, 0, 131, 132, 133,
1313 62 134, 0, 0, 0, 0, 0, 135, 0, 0, 0,
1314 4254 136, 0, 0, 123, 124, 0, 0, 0, 0, 0,
1315 1 0, 0, 125, 126, 0, 0, 0, 0, 0, 0,
1316 1 0, 0, 66, 137, 0, 0, 138, 139, 140, 0,
1317 6 127, 128, 0, 123, 124, 0, 0, 0, 0, 0,
1318 2 0, 0, 125, 126, 27, 66, 137, 129, 0, 138,
1319 139, 140, 130, 0, 0, 0, 131, 132, 133, 134,
1320 127, 0, 0, 0, 0, 135, 0, 0, 0, 136,
1321 0, 0, 0, 0, 27, 0, 0, 129, 0, 0,
1322 0, 0, 130, 0, 0, 0, 131, 132, 133, 134,
1323 0, 0, 0, 0, 0, 135, 0, 0, 0, 136,
1324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1325 0, 0, 0, 0, 66, 137, 0, 0, 138, 139,
1326 140, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1327 0, 0, 0, 7, 0, 8, 207, 0, 0, 0,
1328 153 10, 0, 12, 0, 66, 137, 0, 0, 138, 139,
1329 153 140, 14, 208, 16, 17, 0, 0, 18, 19, 20,
1330 153 21, 22, 23, 24, 25, 26, 0, 0, 7, 27,
1331 8, 207, 0, 0, 0, 10, 0, 12, 209, 0,
1332
2/6
✓ Branch 0 taken 39 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 39 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
39 0, 0, 0, 0, 210, 0, 14, 208, 16, 17,
1333 0, 0, 18, 19, 20, 21, 22, 23, 24, 25,
1334 26, 0, 0, 0, 27, 0, 0, 0, 0, 0,
1335 0, 0, 0, 384, 0, 0, 0, 0, 0, 210,
1336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1337 0, 0, 0, 0, 211, 0, 0, 0, 0, 66,
1338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1339 192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1340 192 0, 0, 0, 0, 0, 0, 0, 0, 0, 211,
1341
2/6
✓ Branch 0 taken 192 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 192 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
192 0, 0, 0, 0, 66
1342 };
1343
1344 static const yytype_int16 yycheck[] =
1345 {
1346 2, 2, 100, 192, 2, 7, 8, 219, 2, 289,
1347 264, 42, 14, 15, 16, 17, 2, 15, 2, 368,
1348 477, 2, 2, 2, 2, 42, 2, 477, 11, 11,
1349 477, 179, 174, 85, 523, 42, 76, 511, 2, 477,
1350 42, 54, 52, 11, 31, 32, 33, 0, 477, 477,
1351 14, 629, 16, 17, 59, 131, 132, 133, 134, 135,
1352 59, 52, 79, 70, 60, 567, 16, 478, 52, 71,
1353 60, 61, 55, 680, 477, 21, 78, 79, 477, 52,
1354 2, 2, 54, 125, 34, 10, 11, 6, 666, 128,
1355 477, 64, 55, 76, 76, 60, 58, 60, 60, 59,
1356 91, 91, 709, 58, 111, 112, 113, 114, 115, 116,
1357 117, 118, 614, 587, 55, 125, 76, 130, 120, 120,
1358 60, 126, 120, 65, 27, 127, 120, 126, 28, 125,
1359 182, 183, 184, 52, 136, 187, 123, 177, 2, 64,
1360 718, 120, 284, 53, 8, 55, 52, 89, 337, 58,
1361 14, 15, 16, 17, 185, 303, 120, 125, 130, 348,
1362 125, 58, 125, 125, 60, 61, 126, 174, 244, 63,
1363 130, 131, 629, 175, 175, 664, 82, 175, 185, 629,
1364 52, 175, 629, 80, 125, 125, 82, 59, 195, 175,
1365 192, 629, 194, 210, 177, 177, 175, 91, 120, 120,
1366 629, 629, 613, 52, 3, 52, 208, 71, 210, 666,
1367 208, 175, 59, 52, 78, 64, 666, 219, 219, 666,
1368 59, 219, 53, 52, 55, 219, 629, 58, 666, 52,
1369 629, 125, 643, 52, 125, 64, 52, 666, 666, 54,
1370 219, 64, 629, 83, 84, 64, 62, 208, 54, 80,
1371 90, 282, 54, 175, 175, 219, 120, 54, 219, 56,
1372 54, 718, 60, 666, 54, 63, 63, 666, 718, 321,
1373 110, 718, 136, 59, 52, 282, 62, 284, 280, 666,
1374 718, 59, 280, 632, 538, 52, 280, 289, 289, 718,
1375 718, 289, 59, 54, 280, 289, 280, 219, 219, 280,
1376 1369555 280, 280, 280, 289, 280, 54, 57, 58, 59, 60,
1377
3/4
✓ Branch 0 taken 1369555 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 444543 times.
✓ Branch 3 taken 925012 times.
1369555 289, 175, 343, 52, 52, 718, 280, 75, 76, 718,
1378 59, 59, 602, 74, 75, 289, 378, 3, 330, 59,
1379 444543 194, 718, 62, 335, 61, 337, 343, 335, 125, 66,
1380 444543 67, 68, 52, 125, 208, 397, 348, 348, 53, 59,
1381 55, 14, 15, 55, 53, 219, 55, 63, 280, 280,
1382 23, 24, 369, 72, 73, 74, 368, 289, 289, 105,
1383
2/6
✓ Branch 0 taken 925012 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 925012 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
925012 106, 107, 108, 109, 376, 376, 77, 78, 376, 477,
1384 63, 53, 376, 55, 63, 597, 79, 80, 81, 82,
1385 130, 131, 55, 445, 58, 58, 398, 376, 121, 122,
1386 63, 19, 27, 44, 45, 46, 47, 48, 49, 50,
1387 51, 128, 376, 128, 55, 58, 280, 80, 252, 253,
1388 254, 255, 474, 121, 122, 289, 44, 45, 46, 47,
1389 48, 49, 50, 51, 121, 122, 69, 55, 490, 121,
1390 122, 493, 631, 256, 257, 258, 259, 31, 32, 33,
1391 121, 122, 85, 52, 376, 376, 245, 246, 247, 125,
1392 566463 512, 117, 125, 126, 121, 122, 129, 130, 131, 58,
1393 1 477, 56, 57, 10, 11, 477, 478, 479, 125, 477,
1394 931 248, 249, 58, 477, 125, 250, 251, 105, 58, 58,
1395 58, 680, 71, 85, 87, 86, 129, 130, 477, 59,
1396 88, 503, 126, 11, 368, 63, 513, 125, 58, 511,
1397 1684215 123, 54, 376, 54, 54, 54, 54, 125, 128, 125,
1398 505062 709, 523, 523, 712, 58, 523, 59, 58, 54, 523,
1399 899947 54, 629, 54, 54, 54, 54, 588, 52, 727, 126,
1400 56795 54, 59, 59, 8, 523, 58, 58, 58, 58, 182,
1401 175720 183, 184, 58, 58, 187, 188, 58, 58, 54, 523,
1402 1 54, 19, 54, 565, 571, 54, 54, 54, 666, 54,
1403 6770 8, 62, 128, 59, 56, 59, 59, 54, 59, 37,
1404 648 38, 39, 40, 59, 54, 587, 44, 45, 46, 47,
1405 48, 49, 50, 51, 54, 597, 58, 55, 54, 597,
1406 1583283 602, 523, 523, 597, 602, 58, 239, 240, 602, 54,
1407
2/6
✓ Branch 0 taken 209303 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 209303 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
209303 54, 54, 54, 54, 478, 479, 602, 54, 597, 621,
1408 718, 623, 624, 602, 626, 677, 59, 629, 630, 631,
1409 632, 629, 62, 597, 59, 629, 59, 130, 602, 59,
1410 130, 59, 59, 59, 58, 58, 52, 511, 59, 59,
1411 629, 59, 503, 82, 52, 91, 63, 59, 710, 523,
1412 59, 54, 664, 63, 666, 667, 664, 125, 666, 671,
1413
2/6
✓ Branch 0 taken 24474 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 24474 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
24474 664, 673, 666, 675, 676, 597, 597, 59, 680, 681,
1414 602, 602, 684, 59, 8, 664, 8, 666, 321, 59,
1415 59, 8, 56, 326, 91, 8, 698, 8, 8, 59,
1416 664, 56, 56, 56, 337, 56, 8, 709, 56, 59,
1417 712, 712, 714, 715, 565, 56, 718, 719, 720, 721,
1418 718, 56, 19, 587, 718, 727, 727, 280, 7, 62,
1419
2/6
✓ Branch 0 taken 9157 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9157 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
9157 632, 106, 333, 597, 679, 393, 738, 398, 602, 718,
1420 742, 38, 664, 664, 219, 378, 262, 44, 45, 46,
1421 47, 48, 49, 50, 51, 345, 260, 128, 55, 710,
1422 393, 261, 395, -1, 397, 263, 265, 665, 632, -1,
1423 621, -1, 623, 624, -1, 626, -1, -1, 19, 630,
1424 21, 22, -1, -1, -1, 26, -1, 28, -1, -1,
1425 -1, -1, -1, -1, -1, -1, 37, 38, 39, 40,
1426 153446 664, -1, 43, 44, 45, 46, 47, 48, 49, 50,
1427 51, -1, 445, -1, 55, -1, 667, -1, -1, -1,
1428 671, -1, 673, -1, 675, 676, -1, -1, 125, -1,
1429 681, -1, -1, 684, -1, -1, -1, -1, -1, -1,
1430 189229 -1, 474, -1, -1, -1, 478, 479, 698, 481, -1,
1431 483, -1, -1, -1, -1, -1, -1, 490, 491, -1,
1432 493, -1, -1, 714, 715, -1, -1, -1, 719, 720,
1433 721, -1, -1, -1, -1, -1, -1, -1, -1, 512,
1434 -1, -1, -1, -1, 125, -1, -1, 738, -1, -1,
1435 -1, 742, -1, -1, -1, -1, -1, -1, -1, 5,
1436 6, 7, 535, 9, 10, 11, 12, -1, 14, 15,
1437 16, 17, 18, 19, 20, 21, 22, 23, 24, -1,
1438 26, -1, 28, -1, -1, -1, -1, -1, 34, 35,
1439 36, 564, 38, 566, -1, 41, 42, 43, 44, 45,
1440 46, 47, 48, 49, 50, 51, -1, -1, 54, 55,
1441 -1, -1, 58, -1, -1, 588, -1, 63, -1, -1,
1442 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1443 76, -1, -1, 606, 80, -1, 609, -1, -1, -1,
1444 613, -1, 615, 616, 617, 618, 619, 620, -1, -1,
1445 -1, -1, -1, -1, 627, 628, -1, -1, -1, -1,
1446 -1, -1, -1, -1, -1, -1, -1, 640, 641, -1,
1447 643, 117, -1, -1, 120, 3, 4, -1, 651, 125,
1448 126, -1, -1, 129, 130, 131, -1, -1, -1, -1,
1449 -1, 19, 665, 21, 22, -1, -1, 670, 26, 27,
1450 28, -1, -1, -1, 677, -1, -1, -1, -1, 37,
1451
2/6
✓ Branch 0 taken 8761 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8761 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8761 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1452 48, 49, 50, 51, 697, -1, -1, 55, -1, 5,
1453 6, 7, -1, 9, -1, -1, 12, 710, 14, 15,
1454 16, 17, 18, 19, 20, 21, 22, 23, 24, -1,
1455 26, -1, 28, -1, -1, -1, -1, -1, 34, 35,
1456 1439560 36, -1, 38, -1, -1, 41, 42, 43, 44, 45,
1457
2/6
✓ Branch 0 taken 217 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 217 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
217 46, 47, 48, 49, 50, 51, -1, -1, 54, 55,
1458 -1, -1, 58, -1, -1, -1, -1, 63, 64, 117,
1459 -1, 67, 68, 69, 70, -1, -1, 125, -1, -1,
1460 76, -1, -1, -1, 80, -1, 19, -1, 21, 22,
1461 -1, -1, -1, 26, -1, 28, -1, -1, -1, -1,
1462 2235237 -1, -1, -1, -1, 37, 38, 39, 40, -1, -1,
1463 2235237 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1464 2235237 -1, 117, 55, -1, 120, -1, -1, -1, -1, 125,
1465 2235237 126, 64, -1, 129, 130, 131, 5, 6, 7, -1,
1466 9, -1, -1, 12, -1, 14, 15, 16, 17, 18,
1467 19, 20, 21, 22, 23, 24, -1, 26, -1, 28,
1468 -1, -1, -1, -1, -1, 34, 35, 36, -1, 38,
1469 -1, -1, 41, 42, 43, 44, 45, 46, 47, 48,
1470 49, 50, 51, -1, -1, 54, 55, 120, -1, 58,
1471 -1, -1, 125, -1, 63, 64, -1, -1, 67, 68,
1472 69, 70, -1, -1, -1, -1, -1, 76, -1, -1,
1473 -1, 80, -1, 19, -1, 21, 22, -1, -1, -1,
1474 2117978 26, -1, 28, -1, -1, -1, -1, -1, -1, -1,
1475
2/6
✓ Branch 0 taken 2117978 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2117978 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2117978 -1, 37, 38, 39, 40, -1, -1, 43, 44, 45,
1476 46, 47, 48, 49, 50, 51, -1, -1, 117, 55,
1477 -1, 120, -1, -1, -1, -1, 125, 126, 64, -1,
1478 129, 130, 131, 5, 6, 7, -1, 9, -1, -1,
1479 8 12, -1, 14, 15, 16, 17, 18, 19, 20, 21,
1480
2/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8 22, 23, 24, -1, 26, -1, 28, -1, -1, -1,
1481 -1, -1, 34, 35, 36, -1, 38, -1, -1, 41,
1482 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1483 -1, -1, 54, 55, 120, -1, 58, -1, -1, 125,
1484 -1, 63, -1, -1, -1, 67, 68, 69, 70, -1,
1485 -1, -1, -1, -1, 76, -1, -1, -1, 80, -1,
1486 849973 19, -1, 21, 22, -1, -1, -1, 26, -1, 28,
1487 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
1488 49974 39, 40, -1, -1, 43, 44, 45, 46, 47, 48,
1489 49974 49, 50, 51, -1, -1, 117, 55, -1, 120, -1,
1490 49974 -1, -1, -1, 125, 126, -1, -1, 129, 130, 131,
1491 5, 6, 7, -1, 9, -1, -1, 12, -1, 14,
1492 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1493 -1, 26, -1, 28, -1, -1, -1, -1, -1, 34,
1494 35, 36, -1, 38, -1, -1, 41, 42, 43, 44,
1495 45, 46, 47, 48, 49, 50, 51, -1, -1, 54,
1496 3 55, -1, -1, 58, -1, -1, 125, -1, 63, 19,
1497 3 -1, -1, 67, 68, 69, 70, -1, -1, -1, -1,
1498
2/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3 -1, 76, 19, -1, -1, 80, -1, 37, 38, 39,
1499 40, -1, -1, -1, 44, 45, 46, 47, 48, 49,
1500 50, 51, -1, -1, -1, 55, -1, 44, 45, 46,
1501 47, 48, 49, 50, 51, -1, -1, -1, 55, -1,
1502 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1,
1503 125, 126, -1, -1, 129, 130, 131, 5, 6, 7,
1504 -1, 9, -1, -1, 12, -1, 14, 15, 16, 17,
1505 613476 18, 19, 20, 21, 22, 23, 24, -1, 26, -1,
1506 613476 -1, -1, -1, -1, -1, -1, 34, 35, -1, -1,
1507
2/6
✓ Branch 0 taken 613476 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 613476 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
613476 38, -1, -1, 41, 42, 125, 44, 45, 46, 47,
1508 48, 49, 50, 51, -1, -1, -1, 55, 125, -1,
1509 286468 58, 3, 4, -1, -1, 63, -1, -1, -1, 67,
1510 286468 68, 69, 70, -1, -1, -1, -1, 19, 76, 21,
1511 286468 22, -1, 80, -1, 26, 27, 28, -1, -1, -1,
1512
2/6
✓ Branch 0 taken 286468 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 286468 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
286468 -1, -1, -1, -1, -1, 37, 38, 39, 40, -1,
1513 -1, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1514 -1, -1, -1, 55, -1, -1, -1, -1, -1, 117,
1515 3, 4, 64, -1, -1, -1, -1, 125, 126, -1,
1516 13, 129, 130, 131, -1, -1, 19, -1, 21, 22,
1517 56795 -1, -1, -1, 26, 27, 28, 29, -1, -1, -1,
1518 56795 -1, -1, -1, -1, 37, 38, 39, 40, -1, -1,
1519 56795 43, 44, 45, 46, 47, 48, 49, 50, 51, 3,
1520 56795 4, -1, 55, -1, -1, 117, -1, -1, 120, 13,
1521 -1, -1, -1, 125, -1, 19, -1, 21, 22, -1,
1522 -1, -1, 26, 27, 28, 29, -1, -1, -1, -1,
1523 -1, -1, -1, 37, 38, 39, 40, -1, -1, 43,
1524 621580 44, 45, 46, 47, 48, 49, 50, 51, -1, -1,
1525 621580 -1, 55, -1, -1, -1, -1, -1, 3, 4, -1,
1526 621580 -1, -1, -1, -1, 117, -1, -1, 120, -1, -1,
1527 621580 -1, -1, 125, 19, -1, 21, 22, -1, -1, -1,
1528 621580 26, 27, 28, -1, -1, -1, -1, -1, -1, -1,
1529 621580 -1, 37, 38, 39, 40, -1, -1, 43, 44, 45,
1530 46, 47, 48, 49, 50, 51, -1, 11, -1, 55,
1531
2/6
✓ Branch 0 taken 56795 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 56795 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
56795 14, 15, -1, 117, -1, -1, 120, -1, 64, 23,
1532 24, 125, -1, -1, -1, -1, -1, -1, -1, -1,
1533 -1, 11, -1, -1, 14, 15, -1, 41, 42, -1,
1534 -1, -1, -1, 23, 24, -1, -1, -1, -1, -1,
1535 -1, 55, -1, -1, 58, -1, -1, -1, -1, 63,
1536 -1, 41, 42, 67, 68, 69, 70, -1, -1, -1,
1537 -1, 117, 76, -1, 120, 55, 80, -1, 58, 125,
1538 -1, -1, -1, 63, -1, -1, -1, 67, 68, 69,
1539 70, -1, -1, -1, -1, -1, 76, -1, -1, -1,
1540 80, 91, 92, 93, 94, 95, 96, 97, 98, 99,
1541 36559 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
1542 36559 124, 125, 126, 113, -1, 129, 130, 131, 14, 15,
1543 36559 -1, -1, -1, 19, -1, -1, -1, 23, 24, -1,
1544 36559 -1, -1, -1, -1, 124, 125, 126, -1, -1, 129,
1545 130, 131, -1, -1, -1, 41, 42, -1, 44, 45,
1546 1859 46, 47, 48, 49, 50, 51, -1, -1, -1, 55,
1547 1859 -1, -1, 58, 59, -1, 61, -1, 63, -1, -1,
1548 1859 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1549 76, -1, -1, -1, 80, -1, -1, 14, 15, -1,
1550 929 -1, -1, 19, -1, -1, -1, 23, 24, 266, 267,
1551 929 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1552 929 278, 279, -1, -1, 41, 42, -1, 44, 45, 46,
1553 929 47, 48, 49, 50, 51, -1, -1, -1, 55, 125,
1554 126, 58, -1, 129, 130, 131, 63, -1, -1, -1,
1555 67, 68, 69, 70, -1, -1, -1, -1, -1, 76,
1556 19, -1, -1, 80, -1, -1, -1, -1, -1, -1,
1557 -1, -1, -1, -1, 14, 15, -1, -1, 37, 38,
1558 39, 40, -1, 23, 24, 44, 45, 46, 47, 48,
1559 49, 50, 51, -1, -1, -1, 55, 14, 15, -1,
1560 -1, 41, 42, -1, -1, -1, 23, 24, 125, 126,
1561 -1, -1, 129, 130, 131, 55, -1, -1, 58, -1,
1562
2/6
✓ Branch 0 taken 632820 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 632820 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
632820 -1, 61, -1, 63, 41, 42, -1, 67, 68, 69,
1563 70, -1, -1, -1, -1, -1, 76, -1, 55, -1,
1564 80, 58, -1, -1, 61, -1, 63, -1, -1, -1,
1565 67, 68, 69, 70, -1, -1, -1, -1, -1, 76,
1566 -1, -1, -1, 80, -1, -1, 125, -1, -1, -1,
1567
2/6
✓ Branch 0 taken 1856 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1856 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1856 -1, -1, -1, -1, 14, 15, -1, -1, -1, -1,
1568 -1, -1, -1, 23, 24, 125, 126, 127, -1, 129,
1569 130, 131, -1, -1, 14, 15, -1, -1, -1, -1,
1570 -1, 41, 42, 23, 24, -1, -1, -1, 125, 126,
1571 127, -1, 129, 130, 131, 55, -1, -1, 58, 59,
1572 -1, 41, 42, 63, -1, -1, -1, 67, 68, 69,
1573 70, -1, -1, -1, -1, 55, 76, -1, 58, 59,
1574 80, -1, -1, 63, -1, -1, -1, 67, 68, 69,
1575 70, -1, -1, -1, -1, -1, 76, -1, -1, -1,
1576 80, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1577 -1, 14, 15, -1, -1, -1, -1, -1, -1, -1,
1578 23, 24, -1, -1, -1, 125, 126, -1, -1, 129,
1579
2/6
✓ Branch 0 taken 43699 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 43699 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
43699 130, 131, -1, -1, 14, 15, -1, -1, 41, 42,
1580 -1, -1, -1, 23, 24, 125, 126, -1, -1, 129,
1581 130, 131, 55, -1, -1, 58, -1, -1, 61, -1,
1582 63, 41, 42, -1, 67, 68, 69, 70, -1, -1,
1583 -1, -1, -1, 76, -1, 55, -1, 80, 58, -1,
1584 -1, -1, -1, 63, 64, -1, -1, 67, 68, 69,
1585 175715 70, -1, -1, -1, -1, -1, 76, -1, -1, -1,
1586 5 80, -1, -1, 14, 15, -1, -1, -1, -1, -1,
1587 -1, -1, 23, 24, -1, -1, -1, -1, -1, -1,
1588 -1, -1, 125, 126, -1, -1, 129, 130, 131, -1,
1589 41, 42, -1, 14, 15, -1, -1, -1, -1, -1,
1590 -1, -1, 23, 24, 55, 125, 126, 58, -1, 129,
1591 130, 131, 63, -1, -1, -1, 67, 68, 69, 70,
1592 41, -1, -1, -1, -1, 76, -1, -1, -1, 80,
1593 -1, -1, -1, -1, 55, -1, -1, 58, -1, -1,
1594 -1, -1, 63, -1, -1, -1, 67, 68, 69, 70,
1595 -1, -1, -1, -1, -1, 76, -1, -1, -1, 80,
1596
1/2
✓ Branch 0 taken 175718 times.
✗ Branch 1 not taken.
175718 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1597 -1, -1, -1, -1, 125, 126, -1, -1, 129, 130,
1598 131, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1599 -1, -1, -1, 19, -1, 21, 22, -1, -1, -1,
1600 26, -1, 28, -1, 125, 126, -1, -1, 129, 130,
1601 131, 37, 38, 39, 40, -1, -1, 43, 44, 45,
1602 46, 47, 48, 49, 50, 51, -1, -1, 19, 55,
1603 21, 22, -1, -1, -1, 26, -1, 28, 64, -1,
1604 -1, -1, -1, -1, 70, -1, 37, 38, 39, 40,
1605 -1, -1, 43, 44, 45, 46, 47, 48, 49, 50,
1606 51, -1, -1, -1, 55, -1, -1, -1, -1, -1,
1607 -1, -1, -1, 64, -1, -1, -1, -1, -1, 70,
1608 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1609 175715 -1, -1, -1, -1, 120, -1, -1, -1, -1, 125,
1610 175715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1611 175715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1612 175715 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
1613
2/6
✓ Branch 0 taken 175715 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 175715 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
175715 -1, -1, -1, -1, 125
1614 };
1615
1616 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
1617 state STATE-NUM. */
1618 static const yytype_uint8 yystos[] =
1619 {
1620 0, 133, 134, 0, 3, 4, 13, 19, 21, 22,
1621 26, 27, 28, 29, 37, 38, 39, 40, 43, 44,
1622 45, 46, 47, 48, 49, 50, 51, 55, 117, 120,
1623 125, 135, 136, 139, 140, 141, 142, 143, 144, 145,
1624 146, 147, 148, 149, 150, 151, 152, 159, 168, 175,
1625 176, 177, 181, 182, 208, 210, 211, 213, 214, 215,
1626 216, 217, 21, 125, 167, 128, 125, 150, 148, 58,
1627 63, 91, 125, 212, 214, 216, 27, 28, 38, 148,
1628 159, 152, 159, 159, 159, 58, 125, 31, 32, 33,
1629 123, 54, 54, 54, 54, 60, 153, 154, 155, 160,
1630 161, 211, 217, 54, 54, 3, 52, 125, 176, 54,
1631 216, 53, 210, 53, 210, 53, 210, 53, 210, 177,
1632 63, 169, 125, 14, 15, 23, 24, 41, 42, 58,
1633 63, 67, 68, 69, 70, 76, 80, 126, 129, 130,
1634 5 131, 211, 218, 219, 221, 222, 223, 224, 225, 226,
1635 5 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
1636 5 237, 238, 239, 240, 242, 245, 246, 247, 248, 249,
1637 154, 209, 217, 148, 63, 63, 212, 27, 242, 58,
1638
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 128, 128, 58, 11, 125, 52, 60, 61, 91, 157,
1639 54, 56, 63, 186, 58, 80, 125, 182, 217, 217,
1640 217, 217, 217, 217, 217, 217, 125, 22, 38, 64,
1641 70, 120, 139, 143, 144, 145, 152, 159, 160, 170,
1642 171, 172, 173, 174, 208, 211, 58, 58, 211, 238,
1643 240, 240, 250, 225, 225, 225, 225, 225, 148, 58,
1644 61, 66, 67, 68, 71, 72, 73, 74, 75, 76,
1645 77, 78, 79, 80, 81, 82, 83, 84, 90, 110,
1646 85, 86, 87, 88, 65, 89, 91, 92, 93, 94,
1647 95, 96, 97, 98, 99, 100, 101, 102, 103, 113,
1648 59, 126, 52, 64, 63, 209, 22, 64, 136, 137,
1649 138, 139, 143, 144, 145, 151, 152, 159, 168, 175,
1650 176, 208, 212, 52, 59, 59, 76, 130, 131, 246,
1651 242, 11, 124, 242, 11, 124, 242, 154, 158, 242,
1652 240, 11, 5, 6, 7, 9, 12, 16, 17, 18,
1653 20, 22, 34, 35, 36, 38, 54, 63, 64, 139,
1654 143, 144, 145, 148, 152, 181, 184, 186, 187, 188,
1655 190, 193, 195, 196, 197, 198, 199, 200, 201, 203,
1656 204, 205, 206, 207, 208, 211, 240, 241, 105, 148,
1657 163, 164, 165, 166, 162, 217, 63, 178, 58, 171,
1658 160, 54, 54, 54, 64, 143, 171, 172, 174, 54,
1659 54, 125, 128, 58, 59, 52, 64, 61, 82, 59,
1660 220, 240, 240, 125, 225, 226, 226, 226, 227, 227,
1661 228, 228, 229, 229, 229, 229, 230, 230, 230, 230,
1662 231, 232, 233, 234, 237, 235, 239, 239, 239, 239,
1663 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1664 120, 135, 154, 209, 64, 58, 64, 138, 143, 54,
1665 54, 54, 54, 54, 54, 246, 130, 131, 59, 59,
1666 59, 52, 121, 122, 121, 122, 121, 122, 121, 122,
1667 121, 122, 121, 122, 52, 62, 242, 58, 58, 58,
1668 189, 58, 240, 58, 54, 130, 54, 130, 183, 184,
1669 58, 58, 189, 58, 240, 54, 54, 54, 54, 198,
1670 64, 143, 184, 8, 54, 54, 54, 54, 164, 217,
1671 59, 52, 91, 52, 82, 22, 64, 139, 143, 144,
1672 145, 152, 159, 179, 180, 208, 242, 59, 59, 59,
1673 220, 240, 242, 211, 222, 52, 59, 62, 56, 64,
1674 242, 59, 59, 59, 128, 242, 54, 17, 18, 145,
1675 152, 185, 186, 188, 190, 193, 197, 203, 204, 206,
1676 207, 208, 217, 241, 58, 59, 61, 125, 148, 240,
1677 1 244, 148, 156, 240, 240, 240, 54, 54, 16, 34,
1678 242, 240, 242, 183, 163, 242, 217, 58, 58, 54,
1679 54, 54, 54, 64, 143, 180, 54, 59, 59, 62,
1680 240, 237, 59, 59, 130, 130, 54, 56, 57, 202,
1681 240, 183, 240, 202, 125, 105, 106, 107, 108, 109,
1682 1 52, 59, 217, 59, 59, 59, 59, 58, 58, 59,
1683 59, 59, 52, 163, 242, 174, 82, 138, 240, 240,
1684 52, 52, 244, 202, 240, 240, 240, 240, 240, 240,
1685 183, 91, 183, 183, 63, 183, 240, 240, 185, 183,
1686 184, 164, 165, 59, 59, 63, 54, 59, 240, 240,
1687 52, 59, 244, 59, 240, 8, 8, 10, 11, 191,
1688 192, 8, 59, 59, 8, 180, 64, 250, 185, 194,
1689 183, 59, 62, 59, 62, 240, 183, 52, 59, 183,
1690 183, 183, 127, 240, 242, 243, 244, 56, 64, 192,
1691 10, 11, 187, 183, 8, 8, 183, 64, 52, 59,
1692 8, 59, 240, 183, 56, 56, 56, 187, 127, 242,
1693 243, 56, 183, 183, 185, 183, 183, 183, 59, 56,
1694 56, 56, 8, 183, 183
1695 };
1696
1697 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
1698 static const yytype_uint8 yyr1[] =
1699 {
1700 0, 132, 133, 134, 134, 134, 135, 135, 135, 135,
1701 1 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1702 135, 136, 136, 137, 137, 137, 137, 138, 138, 138,
1703 138, 138, 138, 138, 138, 138, 138, 138, 138, 139,
1704 140, 141, 141, 141, 142, 143, 143, 143, 143, 143,
1705 143, 143, 143, 143, 143, 143, 143, 144, 144, 145,
1706 145, 146, 147, 148, 148, 149, 149, 150, 150, 150,
1707 150, 150, 150, 150, 150, 150, 151, 152, 152, 153,
1708 153, 154, 154, 155, 155, 156, 157, 157, 158, 158,
1709 159, 159, 159, 159, 159, 160, 160, 160, 161, 161,
1710 162, 162, 163, 163, 163, 163, 163, 164, 165, 165,
1711 166, 167, 168, 169, 169, 170, 170, 170, 170, 170,
1712 170, 170, 170, 171, 171, 172, 173, 174, 174, 174,
1713 174, 174, 174, 174, 175, 176, 177, 178, 178, 179,
1714 179, 179, 179, 180, 180, 180, 180, 180, 180, 180,
1715 181, 181, 182, 182, 182, 182, 182, 182, 183, 184,
1716
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1717 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1718 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
1719 185, 185, 185, 185, 185, 185, 185, 185, 186, 186,
1720 187, 187, 187, 187, 188, 188, 189, 189, 189, 189,
1721 190, 191, 191, 192, 192, 192, 192, 192, 192, 192,
1722 192, 193, 193, 194, 194, 195, 195, 196, 196, 197,
1723 197, 198, 198, 199, 200, 200, 201, 201, 201, 201,
1724 201, 201, 202, 202, 203, 203, 203, 203, 204, 204,
1725 204, 204, 205, 206, 206, 207, 208, 208, 209, 209,
1726 210, 211, 211, 211, 211, 212, 212, 213, 213, 213,
1727 213, 214, 214, 214, 215, 215, 216, 217, 218, 218,
1728 219, 219, 219, 219, 220, 220, 221, 221, 221, 222,
1729 222, 223, 224, 224, 224, 224, 224, 224, 225, 225,
1730 225, 225, 225, 225, 226, 226, 227, 227, 227, 227,
1731 228, 228, 228, 229, 229, 229, 230, 230, 230, 230,
1732 230, 231, 231, 231, 231, 231, 232, 232, 233, 233,
1733 234, 234, 235, 235, 236, 236, 237, 237, 238, 238,
1734 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1735 239, 239, 239, 239, 239, 240, 241, 242, 243, 244,
1736 244, 244, 244, 244, 244, 244, 244, 244, 245, 245,
1737 245, 245, 245, 245, 245, 245, 246, 246, 247, 248,
1738 248, 249, 249, 249, 250, 250
1739 };
1740
1741 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
1742 static const yytype_int8 yyr2[] =
1743 {
1744 0, 2, 1, 2, 2, 0, 1, 1, 1, 2,
1745 2, 2, 1, 1, 1, 1, 2, 2, 2, 2,
1746 5, 4, 5, 2, 2, 1, 1, 1, 2, 2,
1747 2, 1, 1, 1, 1, 2, 2, 2, 5, 3,
1748 4, 2, 3, 7, 3, 5, 5, 5, 5, 5,
1749 5, 5, 5, 5, 5, 5, 5, 4, 6, 1,
1750 1, 3, 5, 2, 1, 2, 1, 1, 1, 1,
1751 1, 1, 1, 1, 1, 1, 4, 2, 2, 3,
1752 1, 3, 1, 2, 1, 4, 3, 1, 3, 1,
1753 2, 2, 2, 2, 2, 2, 2, 5, 4, 7,
1754 1, 3, 3, 1, 1, 1, 0, 2, 5, 3,
1755 2, 1, 3, 3, 2, 2, 2, 2, 2, 1,
1756 1, 1, 1, 2, 1, 2, 1, 2, 1, 2,
1757 2, 2, 2, 5, 2, 4, 1, 3, 2, 2,
1758 2, 1, 1, 2, 1, 2, 2, 2, 2, 5,
1759 3, 1, 5, 5, 5, 6, 6, 4, 1, 2,
1760 6 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
1761 1, 1, 2, 2, 3, 2, 3, 1, 2, 2,
1762 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1763 1, 1, 1, 2, 1, 2, 0, 1, 3, 2,
1764 2, 2, 1, 1, 2, 2, 4, 6, 4, 6,
1765 7, 3, 2, 4, 3, 4, 4, 3, 3, 3,
1766 6765 2, 1, 1, 3, 1, 9, 11, 7, 9, 2,
1767 6765 1, 1, 1, 4, 3, 1, 10, 9, 7, 8,
1768
2/6
✓ Branch 0 taken 6765 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6765 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6765 7, 5, 1, 1, 5, 7, 5, 7, 6, 8,
1769 6, 8, 5, 2, 1, 5, 4, 6, 3, 1,
1770 1, 1, 1, 1, 1, 1, 1, 3, 3, 3,
1771 3, 3, 3, 2, 3, 3, 1, 1, 1, 1,
1772 4, 5, 3, 4, 3, 1, 1, 1, 3, 1,
1773 4, 3, 1, 2, 2, 1, 4, 1, 1, 2,
1774 2, 2, 2, 2, 1, 3, 1, 3, 3, 3,
1775 5 1, 3, 3, 1, 3, 3, 1, 3, 3, 3,
1776 5 3, 1, 3, 3, 3, 3, 1, 3, 1, 3,
1777
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 1, 3, 1, 3, 1, 3, 1, 5, 1, 2,
1778 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1779 3, 3, 3, 3, 3, 1, 1, 1, 1, 3,
1780 3, 3, 3, 3, 5, 5, 5, 5, 1, 1,
1781 1, 1, 1, 1, 4, 4, 2, 1, 1, 1,
1782 1, 9, 8, 3, 3, 1
1783 };
1784
1785
1786 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
1787 static const yytype_int8 yydprec[] =
1788 {
1789 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1791 646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1792 646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1793
2/6
✓ Branch 0 taken 646 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 646 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1794 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1796 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1797 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1798 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1799 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1800 2 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1801 2 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1802
2/6
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1803 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1804 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1806 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1807 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1808 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1809 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1810 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1811 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1813 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1814 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1816 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1817 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1818 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1820 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1821 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1822 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1823 1541517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1824
2/6
✓ Branch 0 taken 1541517 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1541517 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1541517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1825
2/6
✓ Branch 0 taken 41767 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 41767 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
41767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1826 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1827 0, 0, 0, 0, 0, 0
1828 };
1829
1830 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
1831 static const yytype_int8 yymerger[] =
1832 {
1833 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1834 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1835 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1836 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1837 83531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1838 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1839 1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1840 1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1841 1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1842 1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1843 1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1844 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1845 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1847 1513758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1848 1513758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1849 1513758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1850 1513758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1851 1513758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1853 111392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1854
2/6
✓ Branch 0 taken 111392 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 111392 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
111392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1858 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1861 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1867 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1871 0, 0, 0, 0, 0, 0
1872 };
1873
1874 /* YYIMMEDIATE[RULE-NUM] -- True iff rule #RULE-NUM is not to be deferred, as
1875 in the case of predicates. */
1876 static const yybool yyimmediate[] =
1877 {
1878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1882 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1883 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1884 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1888 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1889 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1892 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1897 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1904 979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1905 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1910 976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1911 11 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1912 17273104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1916 3 0, 0, 0, 0, 0, 0
1917 4688 };
1918
1919 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
1920 list of conflicting reductions corresponding to action entry for
1921 state STATE-NUM in yytable. 0 means no conflicts. The list in
1922 yyconfl is terminated by a rule number of 0. */
1923 static const yytype_int8 yyconflp[] =
1924 {
1925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1927 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1928 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1930 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1936 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1939 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
1940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1946 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1956 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1960 3, 0, 0, 0, 0, 0, 5, 0, 0, 0,
1961 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1963 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
1964 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1969 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1970 979 0, 0, 0, 9, 0, 0, 0, 0, 0, 0,
1971 979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1972 979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1973
2/4
✓ Branch 0 taken 979 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 979 times.
✗ Branch 3 not taken.
979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1974 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1975 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1977 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1978 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1979 0, 0, 0, 11, 0, 0, 0, 0, 0, 0,
1980 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1982 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1986 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1987 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1989 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1992 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1993 11 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1994 11 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1995 11 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1996
2/4
✓ Branch 0 taken 11 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11 times.
✗ Branch 3 not taken.
11 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1997 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1998 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2002 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2004 17278782 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2005
2/6
✓ Branch 0 taken 17278782 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 17278782 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
34557564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2007
2/2
✓ Branch 0 taken 7915214 times.
✓ Branch 1 taken 9363568 times.
17278782 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2008 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2009 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2010 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2011 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2012 27201557 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2013 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2016 230179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2017 1429871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2021 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2022
2/6
✓ Branch 0 taken 59 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 59 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
59 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2023 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2024 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2025 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2029 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2030 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2031 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2032 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2033 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2034 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2035 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2036
2/6
✓ Branch 0 taken 83300 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 83300 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
83300 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2037 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2038 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2040 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2042 1576749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2043 1576749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2044 1576749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2045 1576749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2046 1576749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2050 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2051 1336148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2052 1336148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2053 1336148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2054 1336148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2055 1336148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2056 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2057
2/6
✓ Branch 0 taken 1576765 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1576765 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1576765 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2058 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2059 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2060 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2067 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2068 11117021 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2069 6431124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2070 1673133 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2071 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2072 19221278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2073 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2074 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2075 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2076 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2078 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2082 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2083 4160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2084 4160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2085
2/6
✓ Branch 0 taken 4160 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4160 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2087 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2091 3306283 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2092 3306283 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2093
2/6
✓ Branch 0 taken 3306283 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3306283 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3306283 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2094 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2096 19221278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2098
3/8
✓ Branch 0 taken 48739 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 48739 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 48739 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
48739 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2100
3/8
✓ Branch 0 taken 19026 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 19026 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 19026 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
19026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2102 1660123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2105
3/8
✓ Branch 0 taken 965024 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 965024 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 965024 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1930048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2107 3076104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2108 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2110 20651222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2112
3/8
✓ Branch 0 taken 107316 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 107316 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 107316 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
107316 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2113 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2114
3/8
✓ Branch 0 taken 55251 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 55251 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 55251 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
55251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2115 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2116
3/8
✓ Branch 0 taken 328935 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 328935 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 328935 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
328935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2118
3/8
✓ Branch 0 taken 57187 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 57187 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 57187 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
57187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2119 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2120
3/8
✓ Branch 0 taken 8757 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8757 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8757 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
8757 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2123 20651222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2128 20350396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2130
3/8
✓ Branch 0 taken 177109 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 177109 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 177109 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
354218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2132
3/8
✓ Branch 0 taken 67586 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 67586 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 67586 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
135172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2133 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2134
3/8
✓ Branch 0 taken 56131 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 56131 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 56131 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
112262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2136 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2137 18849082 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2139
3/8
✓ Branch 0 taken 852300 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 852300 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 852300 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1704600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2141
3/8
✓ Branch 0 taken 649014 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 649014 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 649014 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1298028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2144 18727310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2145 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2146
3/8
✓ Branch 0 taken 48893 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 48893 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 48893 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
97786 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2148
3/8
✓ Branch 0 taken 72879 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 72879 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 72879 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
145758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2151 17763080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2153
3/8
✓ Branch 0 taken 454583 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 454583 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 454583 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
909166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2155
3/8
✓ Branch 0 taken 82293 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 82293 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 82293 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
164586 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2156 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2157
3/8
✓ Branch 0 taken 315301 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 315301 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 315301 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
630602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2159
3/8
✓ Branch 0 taken 112053 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 112053 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 112053 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
224106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2162 17295768 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2163 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2164
3/8
✓ Branch 0 taken 366729 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 366729 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 366729 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
733458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2165 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2166
3/8
✓ Branch 0 taken 95939 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95939 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 95939 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
191878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2169 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2170
3/8
✓ Branch 0 taken 4644 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4644 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4644 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
9288 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2173 17072170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2174 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2175
3/8
✓ Branch 0 taken 223598 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 223598 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 223598 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
447196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2176 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2178 17067522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2180
3/8
✓ Branch 0 taken 4648 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4648 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4648 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
9296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2181 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2183 17059926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2185
3/8
✓ Branch 0 taken 7596 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7596 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7596 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
15192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2186 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2188 16682298 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2190
3/8
✓ Branch 0 taken 377628 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 377628 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 377628 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
755256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2191 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2192 0, 0, 0, 0, 0
2193 16521250 };
2194
2195
3/8
✓ Branch 0 taken 161048 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 161048 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 161048 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
322096 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
2196 0, pointed into by YYCONFLP. */
2197 static const short yyconfl[] =
2198 16250015 {
2199 0, 261, 0, 262, 0, 263, 0, 264, 0, 78,
2200 0, 235, 0
2201 };
2202 271235
2203 271235
2204 271235 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2205
2/6
✓ Branch 0 taken 271235 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 271235 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
271235 If N is 0, then set CURRENT to the empty location which ends
2206 the previous symbol: RHS[0] (always defined). */
2207
2208 #ifndef YYLLOC_DEFAULT
2209 15978780 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2210 do \
2211
2/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3 if (N) \
2212 { \
2213 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2214 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2215 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2216 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2217 14606888 } \
2218 else \
2219
3/8
✓ Branch 0 taken 1010331 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1010331 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1010331 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2020662 { \
2220 (Current).first_line = (Current).last_line = \
2221 YYRHSLOC (Rhs, 0).last_line; \
2222 81232 (Current).first_column = (Current).last_column = \
2223 81232 YYRHSLOC (Rhs, 0).last_column; \
2224
3/10
✓ Branch 0 taken 81232 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 81232 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 81232 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
162464 } \
2225 while (0)
2226 #endif
2227 20528
2228 20528 # define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
2229
3/10
✓ Branch 0 taken 20528 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 20528 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 20528 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
41056
2230
2231 YYSTYPE yylval;
2232 5097 YYLTYPE yylloc;
2233 5097
2234
3/10
✓ Branch 0 taken 5097 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5097 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5097 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
10194 int yynerrs;
2235 int yychar;
2236
2237 7149 enum { YYENOMEM = -2 };
2238 7149
2239
3/10
✓ Branch 0 taken 7149 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7149 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7149 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
14298 typedef enum { yyok, yyaccept, yyabort, yyerr, yynomem } YYRESULTTAG;
2240
2241 #define YYCHK(YYE) \
2242 1149 do { \
2243 1149 YYRESULTTAG yychk_flag = YYE; \
2244
3/10
✓ Branch 0 taken 1149 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1149 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1149 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
2298 if (yychk_flag != yyok) \
2245 return yychk_flag; \
2246 } while (0)
2247 9828
2248 9828 /* YYINITDEPTH -- initial size of the parser's stacks. */
2249
3/10
✓ Branch 0 taken 9828 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9828 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9828 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
19656 #ifndef YYINITDEPTH
2250 # define YYINITDEPTH 200
2251 #endif
2252
2253 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2254 if the built-in stack extension method is used).
2255
2256 Do not make this value too large; the results are undefined if
2257 7565 SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
2258 7565 evaluated with infinite-precision integer arithmetic. */
2259
3/10
✓ Branch 0 taken 7565 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7565 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7565 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
15130
2260 #ifndef YYMAXDEPTH
2261 # define YYMAXDEPTH 10000
2262 #endif
2263 107652
2264 107652 /* Minimum number of free items on the stack allowed after an
2265
3/10
✓ Branch 0 taken 107652 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 107652 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 107652 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
215304 allocation. This is to allow allocation and initialization
2266 to be completed by functions that call yyexpandGLRStack before the
2267 stack is expanded, thus insuring that all necessary pointers get
2268 properly redirected to new data. */
2269 1520 #define YYHEADROOM 2
2270 1520
2271
3/10
✓ Branch 0 taken 1520 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1520 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1520 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
3040 #ifndef YYSTACKEXPANDABLE
2272 # define YYSTACKEXPANDABLE 1
2273 #endif
2274 119670
2275 119670 #if YYSTACKEXPANDABLE
2276
3/10
✓ Branch 0 taken 119670 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 119670 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 119670 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
239340 # define YY_RESERVE_GLRSTACK(Yystack) \
2277 do { \
2278 if (Yystack->yyspaceLeft < YYHEADROOM) \
2279 170 yyexpandGLRStack (Yystack); \
2280 170 } while (0)
2281
3/10
✓ Branch 0 taken 170 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 170 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 170 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
340 #else
2282 # define YY_RESERVE_GLRSTACK(Yystack) \
2283 do { \
2284 if (Yystack->yyspaceLeft < YYHEADROOM) \
2285 yyMemoryExhausted (Yystack); \
2286 } while (0)
2287 #endif
2288
2289 14606888 /** State numbers. */
2290 typedef int yy_state_t;
2291
2292 /** Rule numbers. */
2293 1873445 typedef int yyRuleNum;
2294 1873445
2295 1873445 /** Item references. */
2296 typedef short yyItemNum;
2297
2298 typedef struct yyGLRState yyGLRState;
2299 typedef struct yyGLRStateSet yyGLRStateSet;
2300 1022025 typedef struct yySemanticOption yySemanticOption;
2301
2/6
✓ Branch 0 taken 1022025 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1022025 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1022025 typedef union yyGLRStackItem yyGLRStackItem;
2302 typedef struct yyGLRStack yyGLRStack;
2303
2304 struct yyGLRState
2305 {
2306 2785 /** Type tag: always true. */
2307 2785 yybool yyisState;
2308
1/2
✓ Branch 0 taken 2785 times.
✗ Branch 1 not taken.
2785 /** Type tag for yysemantics. If true, yyval applies, otherwise
2309 * yyfirstVal applies. */
2310 yybool yyresolved;
2311 /** Number of corresponding LALR(1) machine state. */
2312 yy_state_t yylrState;
2313 /** Preceding state in this stack */
2314 yyGLRState* yypred;
2315 /** Source position of the last token produced by my symbol */
2316 YYPTRDIFF_T yyposn;
2317 2785 union {
2318 2785 /** First in a chain of alternative reductions producing the
2319
2/6
✓ Branch 0 taken 2785 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2785 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2785 * nonterminal corresponding to this state, threaded through
2320 * yynext. */
2321 yySemanticOption* yyfirstVal;
2322 /** Semantic value for this state. */
2323 YYSTYPE yyval;
2324 } yysemantics;
2325 /** Source location for this state. */
2326 YYLTYPE yyloc;
2327 };
2328
2329 struct yyGLRStateSet
2330 {
2331 yyGLRState** yystates;
2332 1 /** During nondeterministic operation, yylookaheadNeeds tracks which
2333 1 * stacks have actually needed the current lookahead. During deterministic
2334
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 * operation, yylookaheadNeeds[0] is not maintained since it would merely
2335 * duplicate yychar != TOK_YYEMPTY. */
2336 yybool* yylookaheadNeeds;
2337 YYPTRDIFF_T yysize;
2338 YYPTRDIFF_T yycapacity;
2339 };
2340
2341 struct yySemanticOption
2342 {
2343 /** Type tag: always false. */
2344 yybool yyisState;
2345 /** Rule number for this reduction */
2346 yyRuleNum yyrule;
2347 /** The last RHS state in the list of states to be reduced. */
2348 yyGLRState* yystate;
2349 /** The lookahead for this reduction. */
2350 int yyrawchar;
2351 YYSTYPE yyval;
2352 YYLTYPE yyloc;
2353 /** Next sibling in chain of options. To facilitate merging,
2354 * options are chained in decreasing order by address. */
2355 yySemanticOption* yynext;
2356 };
2357
2358 /** Type of the items in the GLR stack. The yyisState field
2359 * indicates which item of the union is valid. */
2360 union yyGLRStackItem {
2361 yyGLRState yystate;
2362 yySemanticOption yyoption;
2363 };
2364
2365 struct yyGLRStack {
2366 int yyerrState;
2367 5700510 /* To compute the location of the error token. */
2368
2/6
✓ Branch 0 taken 5700510 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5700510 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5700510 yyGLRStackItem yyerror_range[3];
2369
2370 41211 YYJMP_BUF yyexception_buffer;
2371
2/6
✓ Branch 0 taken 41211 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 41211 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
41211 yyGLRStackItem* yyitems;
2372 yyGLRStackItem* yynextFree;
2373 222046 YYPTRDIFF_T yyspaceLeft;
2374
4/10
✓ Branch 0 taken 222046 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 222046 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 222046 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 222046 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
222046 yyGLRState* yysplitPoint;
2375 yyGLRState* yylastDeleted;
2376 105260 yyGLRStateSet yytops;
2377 339523 };
2378 11438
2379 #if YYSTACKEXPANDABLE
2380 11136 static void yyexpandGLRStack (yyGLRStack* yystackp);
2381
3/8
✓ Branch 0 taken 11136 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11136 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 11136 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
11136 #endif
2382
2383 _Noreturn static void
2384 56 yyFail (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root, const char* yymsg)
2385 {
2386
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 if (yymsg != YY_NULLPTR)
2387 yyerror (root, yymsg);
2388 56 YYLONGJMP (yystackp->yyexception_buffer, 1);
2389 }
2390
2391 3 _Noreturn static void
2392 3 yyMemoryExhausted (yyGLRStack* yystackp)
2393 3 {
2394
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
3 YYLONGJMP (yystackp->yyexception_buffer, 2);
2395 3 }
2396 105461
2397 /** Accessing symbol of state YYSTATE. */
2398 static inline yysymbol_kind_t
2399 110964 yy_accessing_symbol (yy_state_t yystate)
2400 {
2401 216224 return YY_CAST (yysymbol_kind_t, yystos[yystate]);
2402
2/4
✓ Branch 0 taken 105260 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 105260 times.
✗ Branch 3 not taken.
105260 }
2403
2404 #if 1
2405 /* The user-facing name of the symbol whose (internal) number is
2406 YYSYMBOL. No bounds checking. */
2407 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2408
2409
2/6
✓ Branch 0 taken 174070 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 174070 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
174070 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2410
2/6
✓ Branch 0 taken 165453 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 165453 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
165453 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
2411 static const char *const yytname[] =
2412 {
2413 "\"end of file\"", "error", "\"invalid token\"", "SCRIPT", "ZCLASS",
2414 "FOR", "LOOP", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", "RETURN",
2415 "IMPORT", "ZTRUE", "ZFALSE", "WHILE", "BREAK", "CONTINUE", "ZCONST",
2416 "DO", "TYPEDEF", "EXPECTERROR", "OPTIONVALUE", "ISINCLUDED", "DEFINE",
2417 "ENUM", "NAMESPACE", "USING", "ALWAYS", "ZASM", "INCLUDE", "INCLUDEPATH",
2418 "INCLUDEIF", "UNTIL", "UNLESS", "REPEAT", "INLINE", "INTERNAL", "STATIC",
2419 "CONSTEXPR", "NEW", "DELETE", "CASSERT", "ZAUTO", "ZVOID", "UNTYPED",
2420 "ZBOOL", "ZFLOAT", "ZCHAR", "ZLONG", "ZRGB", "COMMA", "DOT", "SEMICOLON",
2421 "SCOPERES", "COLON", "IN", "LPAREN", "RPAREN", "EMPTYBRACKETS",
2422 "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", "QMARK", "ARROW",
2423 "INCREMENT", "DECREMENT", "NOT", "BITNOT", "EXPN", "TIMES", "DIVIDE",
2424 "MODULO", "PLUS", "MINUS", "LSHIFT", "RSHIFT", "LE", "LT", "GE", "GT",
2425 "EQ", "NE", "BITAND", "BITXOR", "BITOR", "AND", "OR", "XOR", "ASSIGN",
2426 "PLUSASSIGN", "MINUSASSIGN", "TIMESASSIGN", "DIVIDEASSIGN",
2427 "MODULOASSIGN", "LSHIFTASSIGN", "RSHIFTASSIGN", "BITANDASSIGN",
2428 "BITXORASSIGN", "BITORASSIGN", "ANDASSIGN", "ORASSIGN", "CAST", "RANGE",
2429 "RANGE_L", "RANGE_R", "RANGE_LR", "RANGE_N", "APPXEQUAL", "DOUBLEBANG",
2430 "PERCENT", "BITNOTASSIGN", "INVMOD", "DOUBLEADDR", "DOUBLESTAR",
2431 "HANDLE", "HANDLETOHANDLE", "ADDR", "HASH", "ENDLINE", "NEWLINE",
2432 "OPTION", "INHERIT", "IDENTIFIER", "QUOTEDSTRING", "CASESTRING",
2433 "IMPORTSTRING", "SINGLECHAR", "NUMBER", "LONGNUMBER", "$accept", "Init",
2434 "Global_List", "Global_Statement", "Namespace", "Namespace_Block_List",
2435 "Namespace_Statement", "Using", "AlwaysUsing", "Import", "IncludePath",
2436 "Option", "Statement_Assert", "DataTypeDef", "StandardDataTypedef",
2437 "EnumDataTypedef", "DataType", "DataType_Mods", "DataType_Base",
2438 "ScriptTypeDef", "Data", "Data_List", "Data_Element",
2439 11438 "Data_Element_Array_List", "Single_Data_req_assign",
2440 11438 "Data_Element_Array_Element", "Data_Element_Array_Element_Size_List",
2441 11438 "Function", "Function_Typeless", "Function_Heading",
2442 "FunctionTemplateList", "Function_Parameters_List",
2443 "Function_Parameters_Element", "Function_OptParams_List",
2444 "Function_VarArg_Element", "Class_Ident", "Class", "Class_Block",
2445 "Class_Block_List", "Class_Constructor", "Class_Destructor",
2446 71521 "Class_Data", "Class_Block_Element", "Annotated_Script", "Script",
2447 71521 "Script_Type", "Script_Block", "Script_Block_List",
2448 71521 "Script_Block_Element", "Annotation_List", "Annotation",
2449 71521 "Block_Statement", "Statement", "Statement_NoSemicolon",
2450 "Statement_Block", "Statement_Block_List", "Statement_If", "If_Body",
2451 11438 "Statement_Switch", "Statement_Switch_Body", "Statement_Switch_Cases",
2452
2/6
✓ Branch 0 taken 11438 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11438 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
11438 "Statement_For", "Statement_CommaList", "Statement_For_Standard",
2453 "Statement_For_Each", "Annotated_Loop", "Statement_Loop",
2454 "Statement_Loop_Inf", "Statement_Loop_Range",
2455 "Statement_Loop_Range_Base", "Token_In", "Statement_While",
2456 "Statement_Do", "Statement_Repeat", "Statement_Return",
2457 "Statement_CompileError", "DataEnum", "Enum_Block", "ScopeRes",
2458 "Identifier_List", "Scoperes_Identifier_List", "Mixed_Identifier_List",
2459 "idlist_scopres", "idlist_dot", "Ambigious_Iden_List", "Identifier",
2460 "Func_Left", "Function_Call", "Function_Call_Parameters", "Expr_1",
2461 "Expr_2", "Expr_Arrow", "Expr_3", "Expr_4", "Expr_5", "Expr_6", "Expr_7",
2462 "Expr_8", "Expr_9", "Expr_10", "Expr_11", "Expr_12", "Expr_13",
2463 "Expr_14", "Expr_15", "Expr_16", "Expr_17", "Expr_18", "Expression",
2464 "Statement_Expression", "Expression_Constant", "Expression_Const_Range",
2465 "Expression_Range", "Literal", "QuotedString", "Literal_String",
2466 "Literal_Bool", "Literal_Array", "Literal_Array_Body", YY_NULLPTR
2467 };
2468
2469 static const char *
2470 yysymbol_name (yysymbol_kind_t yysymbol)
2471 {
2472 return yytname[yysymbol];
2473 }
2474 #endif
2475
2476 /** Left-hand-side symbol for rule #YYRULE. */
2477 static inline yysymbol_kind_t
2478 530967520 yylhsNonterm (yyRuleNum yyrule)
2479 {
2480 530967520 return YY_CAST (yysymbol_kind_t, yyr1[yyrule]);
2481 }
2482
2483 #if YYDEBUG
2484
2485 # ifndef YYFPRINTF
2486 # define YYFPRINTF fprintf
2487 # endif
2488
2489 # define YY_FPRINTF \
2490 YY_IGNORE_USELESS_CAST_BEGIN YY_FPRINTF_
2491
2492 # define YY_FPRINTF_(Args) \
2493 do { \
2494 YYFPRINTF Args; \
2495 YY_IGNORE_USELESS_CAST_END \
2496 } while (0)
2497
2498 # define YY_DPRINTF \
2499 YY_IGNORE_USELESS_CAST_BEGIN YY_DPRINTF_
2500
2501 # define YY_DPRINTF_(Args) \
2502 do { \
2503 if (yydebug) \
2504 YYFPRINTF Args; \
2505 YY_IGNORE_USELESS_CAST_END \
2506 } while (0)
2507
2508
2509 /* YYLOCATION_PRINT -- Print the location on the stream.
2510 This macro was not mandated originally: define only if we know
2511 we won't break user code: when these are the locations we know. */
2512
2513 # ifndef YYLOCATION_PRINT
2514
2515 # if defined YY_LOCATION_PRINT
2516
2517 /* Temporary convenience wrapper in case some people defined the
2518 undocumented and private YY_LOCATION_PRINT macros. */
2519 # define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
2520
2521 # elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2522
2523 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */
2524
2525 YY_ATTRIBUTE_UNUSED
2526 static int
2527 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2528 {
2529 int res = 0;
2530 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2531 if (0 <= yylocp->first_line)
2532 {
2533 res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2534 if (0 <= yylocp->first_column)
2535 res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2536 }
2537 if (0 <= yylocp->last_line)
2538 {
2539 if (yylocp->first_line < yylocp->last_line)
2540 {
2541 res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2542 if (0 <= end_col)
2543 res += YYFPRINTF (yyo, ".%d", end_col);
2544 }
2545 else if (0 <= end_col && yylocp->first_column < end_col)
2546 res += YYFPRINTF (yyo, "-%d", end_col);
2547 }
2548 return res;
2549 }
2550
2551 # define YYLOCATION_PRINT yy_location_print_
2552
2553 /* Temporary convenience wrapper in case some people defined the
2554 undocumented and private YY_LOCATION_PRINT macros. */
2555 # define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
2556
2557 # else
2558
2559 # define YYLOCATION_PRINT(File, Loc) ((void) 0)
2560 /* Temporary convenience wrapper in case some people defined the
2561 undocumented and private YY_LOCATION_PRINT macros. */
2562 # define YY_LOCATION_PRINT YYLOCATION_PRINT
2563
2564 # endif
2565 # endif /* !defined YYLOCATION_PRINT */
2566
2567
2568
2569 /*-----------------------------------.
2570 | Print this symbol's value on YYO. |
2571 `-----------------------------------*/
2572
2573 static void
2574 yy_symbol_value_print (FILE *yyo,
2575 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::unique_ptr<ZScript::ASTFile>& root)
2576 {
2577 FILE *yyoutput = yyo;
2578 YY_USE (yyoutput);
2579 YY_USE (yylocationp);
2580 YY_USE (root);
2581 if (!yyvaluep)
2582 return;
2583 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2584 YY_USE (yykind);
2585 YY_IGNORE_MAYBE_UNINITIALIZED_END
2586 }
2587
2588
2589 /*---------------------------.
2590 | Print this symbol on YYO. |
2591 `---------------------------*/
2592
2593 static void
2594 yy_symbol_print (FILE *yyo,
2595 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::unique_ptr<ZScript::ASTFile>& root)
2596 {
2597 YYFPRINTF (yyo, "%s %s (",
2598 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2599
2600 YYLOCATION_PRINT (yyo, yylocationp);
2601 YYFPRINTF (yyo, ": ");
2602 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, root);
2603 YYFPRINTF (yyo, ")");
2604 }
2605
2606 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2607 do { \
2608 if (yydebug) \
2609 { \
2610 YY_FPRINTF ((stderr, "%s ", Title)); \
2611 yy_symbol_print (stderr, Kind, Value, Location, root); \
2612 YY_FPRINTF ((stderr, "\n")); \
2613 } \
2614 } while (0)
2615
2616 static inline void
2617 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
2618 yyRuleNum yyrule, std::unique_ptr<ZScript::ASTFile>& root);
2619
2620 # define YY_REDUCE_PRINT(Args) \
2621 do { \
2622 if (yydebug) \
2623 yy_reduce_print Args; \
2624 } while (0)
2625
2626 /* Nonzero means print parse trace. It is left uninitialized so that
2627 multiple parsers can coexist. */
2628 int yydebug;
2629
2630 static void yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
2631 YY_ATTRIBUTE_UNUSED;
2632 static void yypdumpstack (yyGLRStack* yystackp)
2633 YY_ATTRIBUTE_UNUSED;
2634
2635 #else /* !YYDEBUG */
2636
2637 # define YY_DPRINTF(Args) do {} while (yyfalse)
2638 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2639 # define YY_REDUCE_PRINT(Args)
2640
2641 #endif /* !YYDEBUG */
2642
2643 #ifndef yystrlen
2644 # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2645 #endif
2646
2647 #ifndef yystpcpy
2648 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2649 # define yystpcpy stpcpy
2650 # else
2651 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2652 YYDEST. */
2653 static char *
2654 yystpcpy (char *yydest, const char *yysrc)
2655 {
2656 char *yyd = yydest;
2657 const char *yys = yysrc;
2658
2659 while ((*yyd++ = *yys++) != '\0')
2660 continue;
2661
2662 return yyd - 1;
2663 }
2664 # endif
2665 #endif
2666
2667 #ifndef yytnamerr
2668 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2669 quotes and backslashes, so that it's suitable for yyerror. The
2670 heuristic is that double-quoting is unnecessary unless the string
2671 contains an apostrophe, a comma, or backslash (other than
2672 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2673 null, do not copy; instead, return the length of what the result
2674 would have been. */
2675 static YYPTRDIFF_T
2676 318 yytnamerr (char *yyres, const char *yystr)
2677 {
2678
2/2
✓ Branch 0 taken 314 times.
✓ Branch 1 taken 4 times.
318 if (*yystr == '"')
2679 {
2680 4 YYPTRDIFF_T yyn = 0;
2681 4 char const *yyp = yystr;
2682
2683 48 for (;;)
2684
2/4
✓ Branch 0 taken 44 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
48 switch (*++yyp)
2685 {
2686 case '\'':
2687 case ',':
2688 goto do_not_strip_quotes;
2689
2690 case '\\':
2691 if (*++yyp != '\\')
2692 goto do_not_strip_quotes;
2693 else
2694 goto append;
2695
2696 append:
2697 default:
2698
2/2
✓ Branch 0 taken 22 times.
✓ Branch 1 taken 22 times.
44 if (yyres)
2699 22 yyres[yyn] = *yyp;
2700 44 yyn++;
2701 44 break;
2702
2703 case '"':
2704
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
4 if (yyres)
2705 2 yyres[yyn] = '\0';
2706 4 return yyn;
2707 }
2708 do_not_strip_quotes: ;
2709 }
2710
2711
2/2
✓ Branch 0 taken 157 times.
✓ Branch 1 taken 157 times.
314 if (yyres)
2712 157 return yystpcpy (yyres, yystr) - yyres;
2713 else
2714 157 return yystrlen (yystr);
2715 318 }
2716 #endif
2717
2718
2719 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
2720 * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
2721 * containing the pointer to the next state in the chain. */
2722 static void yyfillin (yyGLRStackItem *, int, int) YY_ATTRIBUTE_UNUSED;
2723 static void
2724 yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1)
2725 {
2726 int i;
2727 yyGLRState *s = yyvsp[yylow0].yystate.yypred;
2728 for (i = yylow0-1; i >= yylow1; i -= 1)
2729 {
2730 #if YYDEBUG
2731 yyvsp[i].yystate.yylrState = s->yylrState;
2732 #endif
2733 yyvsp[i].yystate.yyresolved = s->yyresolved;
2734 if (s->yyresolved)
2735 yyvsp[i].yystate.yysemantics.yyval = s->yysemantics.yyval;
2736 else
2737 /* The effect of using yyval or yyloc (in an immediate rule) is
2738 * undefined. */
2739 yyvsp[i].yystate.yysemantics.yyfirstVal = YY_NULLPTR;
2740 yyvsp[i].yystate.yyloc = s->yyloc;
2741 s = yyvsp[i].yystate.yypred = s->yypred;
2742 }
2743 }
2744
2745
2746 /** If yychar is empty, fetch the next token. */
2747 static inline yysymbol_kind_t
2748 383115060 yygetToken (int *yycharp, std::unique_ptr<ZScript::ASTFile>& root)
2749 {
2750 yysymbol_kind_t yytoken;
2751 383115060 YY_USE (root);
2752
2/2
✓ Branch 0 taken 285580736 times.
✓ Branch 1 taken 97534324 times.
383115060 if (*yycharp == TOK_YYEMPTY)
2753 {
2754 97534324 YY_DPRINTF ((stderr, "Reading a token\n"));
2755 97534324 *yycharp = yylex ();
2756 97534324 }
2757
2/2
✓ Branch 0 taken 110519 times.
✓ Branch 1 taken 383004541 times.
383115060 if (*yycharp <= TOK_YYEOF)
2758 {
2759 110519 *yycharp = TOK_YYEOF;
2760 110519 yytoken = YYSYMBOL_YYEOF;
2761 110519 YY_DPRINTF ((stderr, "Now at end of input.\n"));
2762 110519 }
2763 else
2764 {
2765
2/4
✓ Branch 0 taken 383004541 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 383004541 times.
✗ Branch 3 not taken.
383004541 yytoken = YYTRANSLATE (*yycharp);
2766 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2767 }
2768 383115060 return yytoken;
2769 }
2770
2771 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
2772 * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
2773 * For convenience, always return YYLOW1. */
2774 static inline int yyfill (yyGLRStackItem *, int *, int, yybool)
2775 YY_ATTRIBUTE_UNUSED;
2776 static inline int
2777 1094725615 yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal)
2778 {
2779
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1094725615 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1094725615 if (!yynormal && yylow1 < *yylow)
2780 {
2781 yyfillin (yyvsp, *yylow, yylow1);
2782 *yylow = yylow1;
2783 }
2784 1094725615 return yylow1;
2785 }
2786
2787 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
2788 * and top stack item YYVSP. YYLVALP points to place to put semantic
2789 * value ($$), and yylocp points to place for location information
2790 * (@$). Returns yyok for normal return, yyaccept for YYACCEPT,
2791 * yyerr for YYERROR, yyabort for YYABORT, yynomem for YYNOMEM. */
2792 static YYRESULTTAG
2793 530945114 yyuserAction (yyRuleNum yyrule, int yyrhslen, yyGLRStackItem* yyvsp,
2794 yyGLRStack* yystackp, YYPTRDIFF_T yyk,
2795 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::unique_ptr<ZScript::ASTFile>& root)
2796 {
2797 530945114 const yybool yynormal YY_ATTRIBUTE_UNUSED = yystackp->yysplitPoint == YY_NULLPTR;
2798 530945114 int yylow = 1;
2799 YY_USE (yyvalp);
2800 YY_USE (yylocp);
2801 530945114 YY_USE (root);
2802 YY_USE (yyk);
2803 YY_USE (yyrhslen);
2804 # undef yyerrok
2805 # define yyerrok (yystackp->yyerrState = 0)
2806 # undef YYACCEPT
2807 # define YYACCEPT return yyaccept
2808 # undef YYABORT
2809 # define YYABORT return yyabort
2810 # undef YYNOMEM
2811 # define YYNOMEM return yynomem
2812 # undef YYERROR
2813 # define YYERROR return yyerrok, yyerr
2814 # undef YYRECOVERING
2815 # define YYRECOVERING() (yystackp->yyerrState != 0)
2816 # undef yyclearin
2817 # define yyclearin (yychar = TOK_YYEMPTY)
2818 # undef YYFILL
2819 # define YYFILL(N) yyfill (yyvsp, &yylow, (N), yynormal)
2820 # undef YYBACKUP
2821 # define YYBACKUP(Token, Value) \
2822 return yyerror (root, YY_("syntax error: cannot back up")), \
2823 yyerrok, yyerr
2824
2825
2/2
✓ Branch 0 taken 530682054 times.
✓ Branch 1 taken 263060 times.
530945114 if (yyrhslen == 0)
2826 263060 *yyvalp = yyval_default;
2827 else
2828 530682054 *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yyval;
2829 /* Default location. */
2830
2/2
✓ Branch 0 taken 530682054 times.
✓ Branch 1 taken 263060 times.
530945114 YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen);
2831 530945114 yystackp->yyerror_range[1].yystate.yyloc = *yylocp;
2832 /* If yyk == -1, we are running a deferred action on a temporary
2833 stack. In that case, YY_REDUCE_PRINT must not play with YYFILL,
2834 so pretend the stack is "normal". */
2835 YY_REDUCE_PRINT ((yynormal || yyk == -1, yyvsp, yyk, yyrule, root));
2836
276/385
✗ Branch 0 not taken.
✓ Branch 1 taken 55260 times.
✓ Branch 2 taken 3943877 times.
✓ Branch 3 taken 3638 times.
✓ Branch 4 taken 55315 times.
✓ Branch 5 taken 53714 times.
✓ Branch 6 taken 1160 times.
✓ Branch 7 taken 3755 times.
✓ Branch 8 taken 37031 times.
✓ Branch 9 taken 2466 times.
✓ Branch 10 taken 2736481 times.
✓ Branch 11 taken 988449 times.
✓ Branch 12 taken 3465 times.
✓ Branch 13 taken 10 times.
✓ Branch 14 taken 32892 times.
✓ Branch 15 taken 84448 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 6 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 4683 times.
✓ Branch 22 taken 33174 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 4684 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 928 times.
✓ Branch 27 taken 47 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 307 times.
✓ Branch 30 taken 36509 times.
✓ Branch 31 taken 26 times.
✓ Branch 32 taken 28 times.
✓ Branch 33 taken 4 times.
✓ Branch 34 taken 7 times.
✓ Branch 35 taken 1 times.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 7 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 34897 times.
✓ Branch 41 taken 18817 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 1160 times.
✓ Branch 44 taken 3646 times.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 9 times.
✓ Branch 58 taken 11075 times.
✓ Branch 59 taken 26005 times.
✓ Branch 60 taken 11075 times.
✓ Branch 61 taken 26005 times.
✓ Branch 62 taken 275791 times.
✓ Branch 63 taken 9895774 times.
✓ Branch 64 taken 689756 times.
✓ Branch 65 taken 9206018 times.
✓ Branch 66 taken 30 times.
✓ Branch 67 taken 507545 times.
✓ Branch 68 taken 109158 times.
✓ Branch 69 taken 815915 times.
✓ Branch 70 taken 4779351 times.
✓ Branch 71 taken 542604 times.
✓ Branch 72 taken 41545 times.
✓ Branch 73 taken 10082 times.
✓ Branch 74 taken 3089544 times.
✓ Branch 75 taken 2466 times.
✓ Branch 76 taken 1116276 times.
✓ Branch 77 taken 4560799 times.
✓ Branch 78 taken 2837 times.
✓ Branch 79 taken 4560799 times.
✓ Branch 80 taken 3390403 times.
✓ Branch 81 taken 2798383 times.
✓ Branch 82 taken 298641 times.
✓ Branch 83 taken 6188786 times.
✓ Branch 84 taken 3 times.
✓ Branch 85 taken 34697 times.
✓ Branch 86 taken 263944 times.
✗ Branch 87 not taken.
✓ Branch 88 taken 34697 times.
✓ Branch 89 taken 15618 times.
✗ Branch 90 not taken.
✗ Branch 91 not taken.
✓ Branch 92 taken 669108 times.
✓ Branch 93 taken 1603810 times.
✓ Branch 94 taken 934715 times.
✓ Branch 95 taken 702810 times.
✓ Branch 96 taken 1 times.
✓ Branch 97 taken 1618557 times.
✓ Branch 98 taken 19022 times.
✓ Branch 99 taken 19022 times.
✗ Branch 100 not taken.
✓ Branch 101 taken 2084909 times.
✓ Branch 102 taken 1313836 times.
✓ Branch 103 taken 123831 times.
✓ Branch 104 taken 928 times.
✓ Branch 105 taken 198984 times.
✓ Branch 106 taken 3713969 times.
✓ Branch 107 taken 190462 times.
✓ Branch 108 taken 123831 times.
✓ Branch 109 taken 928 times.
✓ Branch 110 taken 32897 times.
✓ Branch 111 taken 32896 times.
✓ Branch 112 taken 32891 times.
✓ Branch 113 taken 5 times.
✓ Branch 114 taken 1678628 times.
✗ Branch 115 not taken.
✓ Branch 116 taken 830 times.
✓ Branch 117 taken 4 times.
✓ Branch 118 taken 10 times.
✗ Branch 119 not taken.
✓ Branch 120 taken 32882 times.
✗ Branch 121 not taken.
✓ Branch 122 taken 33702 times.
✓ Branch 123 taken 33712 times.
✓ Branch 124 taken 4 times.
✓ Branch 125 taken 1104040 times.
✓ Branch 126 taken 1104040 times.
✓ Branch 127 taken 574598 times.
✗ Branch 128 not taken.
✗ Branch 129 not taken.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✗ Branch 132 not taken.
✓ Branch 133 taken 38 times.
✓ Branch 134 taken 3529 times.
✓ Branch 135 taken 6000 times.
✓ Branch 136 taken 3528 times.
✓ Branch 137 taken 1 times.
✓ Branch 138 taken 797 times.
✗ Branch 139 not taken.
✓ Branch 140 taken 3529 times.
✗ Branch 141 not taken.
✓ Branch 142 taken 62 times.
✓ Branch 143 taken 4254 times.
✓ Branch 144 taken 1 times.
✓ Branch 145 taken 1 times.
✓ Branch 146 taken 6 times.
✓ Branch 147 taken 2 times.
✗ Branch 148 not taken.
✓ Branch 149 taken 153 times.
✓ Branch 150 taken 39 times.
✓ Branch 151 taken 192 times.
✗ Branch 152 not taken.
✗ Branch 153 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 156 not taken.
✓ Branch 157 taken 1369555 times.
✓ Branch 158 taken 566463 times.
✓ Branch 159 taken 1 times.
✓ Branch 160 taken 931 times.
✗ Branch 161 not taken.
✓ Branch 162 taken 1684215 times.
✓ Branch 163 taken 505062 times.
✓ Branch 164 taken 899947 times.
✓ Branch 165 taken 56795 times.
✓ Branch 166 taken 175720 times.
✓ Branch 167 taken 1 times.
✓ Branch 168 taken 6770 times.
✓ Branch 169 taken 648 times.
✗ Branch 170 not taken.
✓ Branch 171 taken 1583283 times.
✓ Branch 172 taken 209303 times.
✗ Branch 173 not taken.
✓ Branch 174 taken 24474 times.
✗ Branch 175 not taken.
✓ Branch 176 taken 9157 times.
✗ Branch 177 not taken.
✗ Branch 178 not taken.
✓ Branch 179 taken 153446 times.
✗ Branch 180 not taken.
✗ Branch 181 not taken.
✓ Branch 182 taken 189229 times.
✗ Branch 183 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 186 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 189 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 192 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✓ Branch 195 taken 8761 times.
✗ Branch 196 not taken.
✓ Branch 197 taken 1439560 times.
✓ Branch 198 taken 217 times.
✓ Branch 199 taken 2235237 times.
✗ Branch 200 not taken.
✓ Branch 201 taken 2117978 times.
✓ Branch 202 taken 8 times.
✓ Branch 203 taken 849973 times.
✓ Branch 204 taken 49974 times.
✓ Branch 205 taken 3 times.
✗ Branch 206 not taken.
✓ Branch 207 taken 613476 times.
✓ Branch 208 taken 286468 times.
✓ Branch 209 taken 56795 times.
✓ Branch 210 taken 621580 times.
✓ Branch 211 taken 56795 times.
✓ Branch 212 taken 36559 times.
✓ Branch 213 taken 1859 times.
✓ Branch 214 taken 929 times.
✗ Branch 215 not taken.
✓ Branch 216 taken 632820 times.
✓ Branch 217 taken 1856 times.
✗ Branch 218 not taken.
✓ Branch 219 taken 43699 times.
✓ Branch 220 taken 175715 times.
✓ Branch 221 taken 5 times.
✗ Branch 222 not taken.
✓ Branch 223 taken 175718 times.
✓ Branch 224 taken 175715 times.
✗ Branch 225 not taken.
✓ Branch 226 taken 5 times.
✗ Branch 227 not taken.
✗ Branch 228 not taken.
✓ Branch 229 taken 1 times.
✗ Branch 230 not taken.
✓ Branch 231 taken 1 times.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✓ Branch 234 taken 1 times.
✗ Branch 235 not taken.
✓ Branch 236 taken 1 times.
✗ Branch 237 not taken.
✗ Branch 238 not taken.
✗ Branch 239 not taken.
✗ Branch 240 not taken.
✓ Branch 241 taken 6 times.
✗ Branch 242 not taken.
✓ Branch 243 taken 6765 times.
✗ Branch 244 not taken.
✓ Branch 245 taken 5 times.
✗ Branch 246 not taken.
✓ Branch 247 taken 646 times.
✗ Branch 248 not taken.
✓ Branch 249 taken 2 times.
✗ Branch 250 not taken.
✗ Branch 251 not taken.
✓ Branch 252 taken 1541517 times.
✓ Branch 253 taken 41767 times.
✗ Branch 254 not taken.
✓ Branch 255 taken 83531 times.
✓ Branch 256 taken 1856 times.
✓ Branch 257 taken 1513758 times.
✓ Branch 258 taken 111392 times.
✓ Branch 259 taken 979 times.
✗ Branch 260 not taken.
✓ Branch 261 taken 976 times.
✓ Branch 262 taken 11 times.
✓ Branch 263 taken 17273104 times.
✓ Branch 264 taken 3 times.
✓ Branch 265 taken 4688 times.
✗ Branch 266 not taken.
✗ Branch 267 not taken.
✗ Branch 268 not taken.
✗ Branch 269 not taken.
✗ Branch 270 not taken.
✓ Branch 271 taken 979 times.
✗ Branch 272 not taken.
✗ Branch 273 not taken.
✓ Branch 274 taken 11 times.
✓ Branch 275 taken 17278782 times.
✓ Branch 276 taken 27201557 times.
✓ Branch 277 taken 230179 times.
✓ Branch 278 taken 1429871 times.
✓ Branch 279 taken 59 times.
✓ Branch 280 taken 15 times.
✓ Branch 281 taken 83300 times.
✓ Branch 282 taken 1576749 times.
✓ Branch 283 taken 1336148 times.
✓ Branch 284 taken 1576765 times.
✓ Branch 285 taken 11117021 times.
✓ Branch 286 taken 6431124 times.
✓ Branch 287 taken 1673133 times.
✓ Branch 288 taken 19221278 times.
✓ Branch 289 taken 4160 times.
✓ Branch 290 taken 3306283 times.
✓ Branch 291 taken 19221278 times.
✓ Branch 292 taken 48739 times.
✓ Branch 293 taken 19026 times.
✓ Branch 294 taken 1660123 times.
✓ Branch 295 taken 965024 times.
✓ Branch 296 taken 3076104 times.
✓ Branch 297 taken 20651222 times.
✓ Branch 298 taken 107316 times.
✓ Branch 299 taken 55251 times.
✓ Branch 300 taken 328935 times.
✓ Branch 301 taken 57187 times.
✓ Branch 302 taken 8757 times.
✓ Branch 303 taken 20651222 times.
✗ Branch 304 not taken.
✓ Branch 305 taken 20350396 times.
✓ Branch 306 taken 177109 times.
✓ Branch 307 taken 67586 times.
✓ Branch 308 taken 56131 times.
✓ Branch 309 taken 18849082 times.
✓ Branch 310 taken 852300 times.
✓ Branch 311 taken 649014 times.
✓ Branch 312 taken 18727310 times.
✓ Branch 313 taken 48893 times.
✓ Branch 314 taken 72879 times.
✓ Branch 315 taken 17763080 times.
✓ Branch 316 taken 454583 times.
✓ Branch 317 taken 82293 times.
✓ Branch 318 taken 315301 times.
✓ Branch 319 taken 112053 times.
✓ Branch 320 taken 17295768 times.
✓ Branch 321 taken 366729 times.
✓ Branch 322 taken 95939 times.
✗ Branch 323 not taken.
✓ Branch 324 taken 4644 times.
✓ Branch 325 taken 17072170 times.
✓ Branch 326 taken 223598 times.
✓ Branch 327 taken 17067522 times.
✓ Branch 328 taken 4648 times.
✓ Branch 329 taken 17059926 times.
✓ Branch 330 taken 7596 times.
✓ Branch 331 taken 16682298 times.
✓ Branch 332 taken 377628 times.
✓ Branch 333 taken 16521250 times.
✓ Branch 334 taken 161048 times.
✓ Branch 335 taken 16250015 times.
✓ Branch 336 taken 271235 times.
✓ Branch 337 taken 15978780 times.
✓ Branch 338 taken 3 times.
✓ Branch 339 taken 14606888 times.
✓ Branch 340 taken 1010331 times.
✓ Branch 341 taken 81232 times.
✓ Branch 342 taken 20528 times.
✓ Branch 343 taken 5097 times.
✓ Branch 344 taken 7149 times.
✓ Branch 345 taken 1149 times.
✓ Branch 346 taken 9828 times.
✗ Branch 347 not taken.
✓ Branch 348 taken 7565 times.
✓ Branch 349 taken 107652 times.
✓ Branch 350 taken 1520 times.
✓ Branch 351 taken 119670 times.
✓ Branch 352 taken 170 times.
✗ Branch 353 not taken.
✓ Branch 354 taken 14606888 times.
✓ Branch 355 taken 1873445 times.
✓ Branch 356 taken 1022025 times.
✓ Branch 357 taken 2785 times.
✓ Branch 358 taken 2785 times.
✗ Branch 359 not taken.
✗ Branch 360 not taken.
✓ Branch 361 taken 1 times.
✗ Branch 362 not taken.
✗ Branch 363 not taken.
✗ Branch 364 not taken.
✗ Branch 365 not taken.
✗ Branch 366 not taken.
✓ Branch 367 taken 5700510 times.
✓ Branch 368 taken 41211 times.
✓ Branch 369 taken 222046 times.
✓ Branch 370 taken 105260 times.
✓ Branch 371 taken 339523 times.
✓ Branch 372 taken 11438 times.
✓ Branch 373 taken 11136 times.
✗ Branch 374 not taken.
✓ Branch 375 taken 3 times.
✓ Branch 376 taken 105461 times.
✓ Branch 377 taken 105260 times.
✓ Branch 378 taken 174070 times.
✓ Branch 379 taken 165453 times.
✗ Branch 380 not taken.
✗ Branch 381 not taken.
✓ Branch 382 taken 11438 times.
✓ Branch 383 taken 71521 times.
✓ Branch 384 taken 11438 times.
530945114 switch (yyrule)
2837 {
2838 case 2: /* Init: Global_List */
2839 #line 306 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2840 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2841 #line 2842 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2842 break;
2843
2844 case 3: /* Global_List: Global_List Global_Statement */
2845 #line 312 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2846 {
2847 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2848 root->addDeclaration(declaration);}
2849 #line 2850 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2850 break;
2851
2852 case 4: /* Global_List: Global_List Option */
2853 #line 315 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2854 {
2855 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2856 root->options.push_back(option);
2857 if (root->hasDeclarations())
2858 yywarn("WARNING: Options should come before everything else.");}
2859 #line 2860 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2860 break;
2861
2862 case 5: /* Global_List: %empty */
2863 #line 320 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2864 {root.reset(new ASTFile(noloc));}
2865 #line 2866 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2866 break;
2867
2868 case 6: /* Global_Statement: Import */
2869 #line 324 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2870 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2871 #line 2872 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2872 break;
2873
2874 case 7: /* Global_Statement: IncludePath */
2875 #line 325 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2876 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2877 #line 2878 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2878 break;
2879
2880 case 8: /* Global_Statement: Namespace */
2881 #line 326 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2882 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2883 #line 2884 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2884 break;
2885
2886 case 9: /* Global_Statement: DataTypeDef SEMICOLON */
2887 #line 327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2888 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2889 #line 2890 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2890 break;
2891
2892 case 10: /* Global_Statement: ScriptTypeDef SEMICOLON */
2893 #line 328 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2894 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2895 #line 2896 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2896 break;
2897
2898 case 11: /* Global_Statement: Data SEMICOLON */
2899 #line 329 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2900 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2901 #line 2902 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2902 break;
2903
2904 case 12: /* Global_Statement: Function */
2905 #line 330 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2906 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2907 #line 2908 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2908 break;
2909
2910 case 13: /* Global_Statement: Script */
2911 #line 331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2912 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2913 #line 2914 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2914 break;
2915
2916 case 14: /* Global_Statement: Annotated_Script */
2917 #line 332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2918 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2919 #line 2920 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2920 break;
2921
2922 case 15: /* Global_Statement: Class */
2923 #line 333 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2924 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2925 #line 2926 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2926 break;
2927
2928 case 16: /* Global_Statement: DataEnum SEMICOLON */
2929 #line 334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2930 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2931 #line 2932 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2932 break;
2933
2934 case 17: /* Global_Statement: Using SEMICOLON */
2935 #line 335 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2936 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2937 #line 2938 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2938 break;
2939
2940 case 18: /* Global_Statement: AlwaysUsing SEMICOLON */
2941 #line 336 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2942 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2943 #line 2944 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2944 break;
2945
2946 case 19: /* Global_Statement: Statement_Assert SEMICOLON */
2947 #line 337 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2948 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2949 #line 2950 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2950 break;
2951
2952 case 20: /* Global_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Global_Statement */
2953 #line 338 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2954 {
2955 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
2956 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2957 declaration->compileErrorCatches.push_back(errorId);
2958 (*yyvalp) = declaration;}
2959 #line 2960 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2960 break;
2961
2962 case 21: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE RBRACE */
2963 #line 349 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2964 {
2965 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
2966 ASTNamespace* namesp = new ASTNamespace((*yylocp));
2967 namesp->identifier = idens->componentNodes.front()->clone();
2968 if (!ParserHelper::isValidIdentifier(namesp->getName()))
2969 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,namesp->getName().c_str());
2970 auto& components = idens->componentNodes;
2971 if(components.size() > 1)
2972 for(auto it = components.begin() + 1;
2973 it != components.end(); ++it)
2974 {
2975 ASTNamespace* subsp = new ASTNamespace((*yylocp));
2976 subsp->identifier = (*it)->clone();
2977 if (!ParserHelper::isValidIdentifier(subsp->getName()))
2978 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,subsp->getName().c_str());
2979 namesp->namespaces.push_back(subsp);
2980 }
2981 delete idens;
2982 (*yyvalp) = namesp;
2983 }
2984 #line 2985 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2985 break;
2986
2987 case 22: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE Namespace_Block_List RBRACE */
2988 #line 369 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2989 {
2990 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
2991 auto& components = idens->componentNodes;
2992 int32_t size = components.size();
2993 if(size == 1)
2994 {
2995 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
2996 namesp->identifier = components.front()->clone();
2997 namesp->location = (*yylocp);
2998 delete idens;
2999 (*yyvalp) = namesp;
3000 }
3001 else if(size == 2)
3002 {
3003 ASTNamespace* top = new ASTNamespace((*yylocp));
3004 top->identifier = components.front()->clone();
3005 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3006 namesp->identifier = components[1]->clone();
3007 namesp->location = (*yylocp);
3008 top->namespaces.push_back(namesp);
3009 delete idens;
3010 (*yyvalp) = top;
3011 }
3012 else
3013 {
3014 ASTNamespace* top = new ASTNamespace((*yylocp));
3015 top->identifier = components.front()->clone();
3016 ASTNamespace* temp = top;
3017 ASTNamespace* temp2;
3018 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3019 namesp->identifier = components.back()->clone();
3020 components.pop_back();
3021 namesp->location = (*yylocp);
3022 for(auto it = components.begin() + 1;
3023 it != components.end(); ++it)
3024 {
3025 temp2 = new ASTNamespace((*yylocp));
3026 temp->identifier = (*it)->clone();
3027 temp->namespaces.push_back(temp2);
3028 temp = temp2;
3029 }
3030 temp->namespaces.push_back(namesp);
3031 delete idens;
3032 (*yyvalp) = top;
3033 }
3034
3035 auto ns = (ASTNamespace*)(*yyvalp);
3036 if (!ParserHelper::isValidIdentifier(ns->getName()))
3037 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,ns->getName().c_str());
3038 }
3039 #line 3040 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3040 break;
3041
3042 case 23: /* Namespace_Block_List: Namespace_Block_List Namespace_Statement */
3043 #line 422 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3044 {
3045 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3046 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3047 namesp->addDeclaration(*declaration);
3048 namesp->location = (*yylocp);
3049 (*yyvalp) = namesp;}
3050 #line 3051 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3051 break;
3052
3053 case 24: /* Namespace_Block_List: Namespace_Block_List Option */
3054 #line 428 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3055 {
3056 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3057 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3058 namesp->options.push_back(option);
3059 namesp->location = (*yylocp);
3060 (*yyvalp) = namesp;
3061 if (!namesp->variables.empty()
3062 || !namesp->functions.empty()
3063 || !namesp->dataTypes.empty()
3064 || !namesp->scriptTypes.empty()) {
3065 yywarn("WARNING: Options should come before everything else.");}}
3066 #line 3067 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3067 break;
3068
3069 case 25: /* Namespace_Block_List: Namespace_Statement */
3070 #line 439 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3071 {
3072 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3073 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3074 namesp->addDeclaration(*declaration);
3075 (*yyvalp) = namesp;}
3076 #line 3077 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3077 break;
3078
3079 case 26: /* Namespace_Block_List: Option */
3080 #line 444 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3081 {
3082 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3083 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3084 namesp->options.push_back(option);
3085 (*yyvalp) = namesp;}
3086 #line 3087 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3087 break;
3088
3089 case 27: /* Namespace_Statement: Namespace */
3090 #line 452 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3091 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3092 #line 3093 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3093 break;
3094
3095 case 28: /* Namespace_Statement: DataTypeDef SEMICOLON */
3096 #line 453 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3097 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3098 #line 3099 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3099 break;
3100
3101 case 29: /* Namespace_Statement: ScriptTypeDef SEMICOLON */
3102 #line 454 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3103 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3104 #line 3105 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3105 break;
3106
3107 case 30: /* Namespace_Statement: Data SEMICOLON */
3108 #line 455 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3109 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3110 #line 3111 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3111 break;
3112
3113 case 31: /* Namespace_Statement: Function */
3114 #line 456 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3115 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3116 #line 3117 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3117 break;
3118
3119 case 32: /* Namespace_Statement: Script */
3120 #line 457 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3121 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3122 #line 3123 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3123 break;
3124
3125 case 33: /* Namespace_Statement: Annotated_Script */
3126 #line 458 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3127 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3128 #line 3129 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3129 break;
3130
3131 case 34: /* Namespace_Statement: Class */
3132 #line 459 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3133 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3134 #line 3135 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3135 break;
3136
3137 case 35: /* Namespace_Statement: DataEnum SEMICOLON */
3138 #line 460 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3139 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3140 #line 3141 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3141 break;
3142
3143 case 36: /* Namespace_Statement: Using SEMICOLON */
3144 #line 461 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3145 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3146 #line 3147 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3147 break;
3148
3149 case 37: /* Namespace_Statement: Statement_Assert SEMICOLON */
3150 #line 462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3151 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3152 #line 3153 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3153 break;
3154
3155 case 38: /* Namespace_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Namespace_Statement */
3156 #line 463 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3157 {
3158 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3159 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3160 declaration->compileErrorCatches.push_back(errorId);
3161 (*yyvalp) = declaration;}
3162 #line 3163 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3163 break;
3164
3165 case 39: /* Using: USING NAMESPACE Scoperes_Identifier_List */
3166 #line 473 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3167 {
3168 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3169 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp));
3170 }
3171 #line 3172 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3172 break;
3173
3174 case 40: /* AlwaysUsing: ALWAYS USING NAMESPACE Scoperes_Identifier_List */
3175 #line 479 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3176 {
3177 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3178 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp), true);
3179 }
3180 #line 3181 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3181 break;
3182
3183 case 41: /* Import: IMPORT IMPORTSTRING */
3184 #line 488 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3185 {
3186 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3187 (*yyvalp) = new ASTImportDecl(str->getValue(), (*yylocp));
3188 delete str;}
3189 #line 3190 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3190 break;
3191
3192 case 42: /* Import: HASH INCLUDE IMPORTSTRING */
3193 #line 492 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3194 {
3195 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3196 (*yyvalp) = new ASTImportDecl(str->getValue(), (*yylocp), true);
3197 delete str;}
3198 #line 3199 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3199 break;
3200
3201 case 43: /* Import: HASH INCLUDEIF LPAREN Expression_Constant COMMA IMPORTSTRING RPAREN */
3202 #line 496 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3203 {
3204 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3205 ASTExprConst* cond = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3206 ASTImportDecl* decl = new ASTImportDecl(str->getValue(), (*yylocp), true);
3207 (*yyvalp) = new ASTImportCondDecl(cond, decl, (*yylocp));
3208 delete str;}
3209 #line 3210 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3210 break;
3211
3212 case 44: /* IncludePath: HASH INCLUDEPATH IMPORTSTRING */
3213 #line 505 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3214 {
3215 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3216 (*yyvalp) = new ASTIncludePath(str->getValue(), (*yylocp));
3217 delete str;}
3218 #line 3219 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3219 break;
3220
3221 case 45: /* Option: HASH OPTION IDENTIFIER Expression_Constant ENDLINE */
3222 #line 515 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3223 {
3224 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3225 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3226 (*yyvalp) = new ASTSetOption(name->getValue(), expr, (*yylocp));
3227 delete name;}
3228 #line 3229 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3229 break;
3230
3231 case 46: /* Option: HASH OPTION IDENTIFIER Expression_Constant NEWLINE */
3232 #line 521 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3233 {
3234 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3235 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3236 (*yyvalp) = new ASTSetOption(name->getValue(), expr, (*yylocp));
3237 delete name;}
3238 #line 3239 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3239 break;
3240
3241 case 47: /* Option: HASH OPTION IDENTIFIER INHERIT ENDLINE */
3242 #line 526 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3243 {
3244 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3245 (*yyvalp) = new ASTSetOption(
3246 name->getValue(), CompileOptionSetting::Inherit, (*yylocp));
3247 delete name;}
3248 #line 3249 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3249 break;
3250
3251 case 48: /* Option: HASH OPTION IDENTIFIER INHERIT NEWLINE */
3252 #line 531 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3253 {
3254 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3255 (*yyvalp) = new ASTSetOption(
3256 name->getValue(), CompileOptionSetting::Inherit, (*yylocp));
3257 delete name;}
3258 #line 3259 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3259 break;
3260
3261 case 49: /* Option: HASH OPTION IDENTIFIER DEFAULT ENDLINE */
3262 #line 536 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3263 {
3264 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3265 (*yyvalp) = new ASTSetOption(
3266 name->getValue(), CompileOptionSetting::Default, (*yylocp));
3267 delete name;}
3268 #line 3269 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3269 break;
3270
3271 case 50: /* Option: HASH OPTION IDENTIFIER DEFAULT NEWLINE */
3272 #line 541 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3273 {
3274 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3275 (*yyvalp) = new ASTSetOption(
3276 name->getValue(), CompileOptionSetting::Default, (*yylocp));
3277 delete name;}
3278 #line 3279 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3279 break;
3280
3281 case 51: /* Option: HASH OPTION DEFAULT Expression_Constant ENDLINE */
3282 #line 546 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3283 {
3284 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3285 (*yyvalp) = new ASTSetOption("default", expr, (*yylocp));}
3286 #line 3287 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3287 break;
3288
3289 case 52: /* Option: HASH OPTION DEFAULT Expression_Constant NEWLINE */
3290 #line 549 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3291 {
3292 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3293 (*yyvalp) = new ASTSetOption("default", expr, (*yylocp));}
3294 #line 3295 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3295 break;
3296
3297 case 53: /* Option: HASH OPTION DEFAULT INHERIT ENDLINE */
3298 #line 552 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3299 {
3300 (*yyvalp) = new ASTSetOption(
3301 "default", CompileOptionSetting::Inherit, (*yylocp));}
3302 #line 3303 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3303 break;
3304
3305 case 54: /* Option: HASH OPTION DEFAULT INHERIT NEWLINE */
3306 #line 555 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3307 {
3308 (*yyvalp) = new ASTSetOption(
3309 "default", CompileOptionSetting::Inherit, (*yylocp));}
3310 #line 3311 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3311 break;
3312
3313 case 55: /* Option: HASH OPTION DEFAULT DEFAULT ENDLINE */
3314 #line 558 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3315 {
3316 (*yyvalp) = new ASTSetOption(
3317 "default", CompileOptionSetting::Default, (*yylocp));}
3318 #line 3319 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3319 break;
3320
3321 case 56: /* Option: HASH OPTION DEFAULT DEFAULT NEWLINE */
3322 #line 561 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3323 {
3324 (*yyvalp) = new ASTSetOption(
3325 "default", CompileOptionSetting::Default, (*yylocp));}
3326 #line 3327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3327 break;
3328
3329 case 57: /* Statement_Assert: CASSERT LPAREN Expression_Constant RPAREN */
3330 #line 570 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3331 {
3332 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, NULL, (*yylocp));
3333 }
3334 #line 3335 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3335 break;
3336
3337 case 58: /* Statement_Assert: CASSERT LPAREN Expression_Constant COMMA QuotedString RPAREN */
3338 #line 573 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3339 {
3340 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));
3341 }
3342 #line 3343 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3343 break;
3344
3345 case 59: /* DataTypeDef: StandardDataTypedef */
3346 #line 581 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3347 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3348 #line 3349 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3349 break;
3350
3351 case 60: /* DataTypeDef: EnumDataTypedef */
3352 #line 582 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3353 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3354 #line 3355 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3355 break;
3356
3357 case 61: /* StandardDataTypedef: TYPEDEF DataType IDENTIFIER */
3358 #line 585 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3359 {
3360 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3361 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3362 (*yyvalp) = new ASTDataTypeDef(type, name->getValue(), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yyloc));
3363 delete name;}
3364 #line 3365 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3365 break;
3366
3367 case 62: /* EnumDataTypedef: ENUM IDENTIFIER LBRACE Enum_Block RBRACE */
3368 #line 592 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3369 {
3370 ASTDataEnum* en = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3371 ASTString* identifier = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3372 (*yyvalp) = new ASTCustomDataTypeDef(NULL, identifier->getValue(), en, (*yylocp));
3373 delete identifier;}
3374 #line 3375 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3375 break;
3376
3377 case 63: /* DataType: DataType EMPTYBRACKETS */
3378 #line 599 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3379 {
3380 ASTDataType* dtype = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3381 ++dtype->becomeArray;
3382 (*yyvalp) = dtype;
3383 }
3384 #line 3385 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3385 break;
3386
3387 case 64: /* DataType: DataType_Mods */
3388 #line 604 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3389 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3390 #line 3391 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3391 break;
3392
3393 case 65: /* DataType_Mods: ZCONST DataType_Base */
3394 #line 608 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3395 {
3396 ASTDataType* dtype = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3397 ++dtype->constant_; //Increment the number of `const` keywords. If >1, this will produce an error later.
3398 (*yyvalp) = dtype;
3399 }
3400 #line 3401 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3401 break;
3402
3403 case 66: /* DataType_Mods: DataType_Base */
3404 #line 613 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3405 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3406 #line 3407 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3407 break;
3408
3409 case 67: /* DataType_Base: ZAUTO */
3410 #line 618 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3411 {(*yyvalp) = new ASTDataType(DataType::ZAUTO, (*yylocp));}
3412 #line 3413 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3413 break;
3414
3415 case 68: /* DataType_Base: ZVOID */
3416 #line 619 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3417 {(*yyvalp) = new ASTDataType(DataType::ZVOID, (*yylocp));}
3418 #line 3419 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3419 break;
3420
3421 case 69: /* DataType_Base: UNTYPED */
3422 #line 620 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3423 {(*yyvalp) = new ASTDataType(DataType::UNTYPED, (*yylocp));}
3424 #line 3425 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3425 break;
3426
3427 case 70: /* DataType_Base: ZBOOL */
3428 #line 621 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3429 {(*yyvalp) = new ASTDataType(DataType::BOOL, (*yylocp));}
3430 #line 3431 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3431 break;
3432
3433 case 71: /* DataType_Base: ZFLOAT */
3434 #line 622 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3435 {(*yyvalp) = new ASTDataType(DataType::FLOAT, (*yylocp));}
3436 #line 3437 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3437 break;
3438
3439 case 72: /* DataType_Base: ZCHAR */
3440 #line 623 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3441 {(*yyvalp) = new ASTDataType(DataType::CHAR, (*yylocp));}
3442 #line 3443 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3443 break;
3444
3445 case 73: /* DataType_Base: ZLONG */
3446 #line 624 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3447 {(*yyvalp) = new ASTDataType(DataType::LONG, (*yylocp));}
3448 #line 3449 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3449 break;
3450
3451 case 74: /* DataType_Base: ZRGB */
3452 #line 625 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3453 {(*yyvalp) = new ASTDataType(DataType::RGBDATA, (*yylocp));}
3454 #line 3455 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3455 break;
3456
3457 case 75: /* DataType_Base: Identifier_List */
3458 #line 627 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3459 {
3460 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3461 std::string comment = std::move(iden->doc_comment);
3462 ASTDataType* datatype = new ASTDataType(new DataTypeUnresolved(iden), (*yylocp));
3463 datatype->doc_comment = std::move(comment);
3464 (*yyvalp) = datatype;
3465 }
3466 #line 3467 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3467 break;
3468
3469 case 76: /* ScriptTypeDef: SCRIPT TYPEDEF Script_Type IDENTIFIER */
3470 #line 636 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3471 {
3472 ASTScriptType* oldType = static_cast<ASTScriptType*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval);
3473 ASTString* newName = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3474 (*yyvalp) = new ASTScriptTypeDef(oldType, newName->getValue(), (*yylocp));
3475 delete newName;}
3476 #line 3477 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3477 break;
3478
3479 case 77: /* Data: INTERNAL Data */
3480 #line 647 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3481 {
3482 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3483 if (list->internal)
3484 yyerrmsg("internal modifier used twice");
3485 list->internal = true;
3486 (*yyvalp) = list;}
3487 #line 3488 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3488 break;
3489
3490 case 78: /* Data: DataType Data_List */
3491 #line 653 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3492 {
3493 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3494 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3495 list->baseType = type;
3496 if (!type->doc_comment.empty())
3497 list->doc_comment = std::move(type->doc_comment);
3498 list->location = (*yylocp);
3499 (*yyvalp) = list;}
3500 #line 3501 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3501 break;
3502
3503 case 79: /* Data_List: Data_List COMMA Data_Element */
3504 #line 664 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3505 {
3506 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3507 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3508 list->addDeclaration(element);
3509 list->location = (*yylocp);
3510 (*yyvalp) = list;}
3511 #line 3512 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3512 break;
3513
3514 case 80: /* Data_List: Data_Element */
3515 #line 670 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3516 {
3517 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3518 ASTDataDeclList* list = new ASTDataDeclList((*yylocp));
3519 list->addDeclaration(element);
3520 if (!element->doc_comment.empty())
3521 list->doc_comment = std::move(element->doc_comment);
3522 (*yyvalp) = list;}
3523 #line 3524 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3524 break;
3525
3526 case 81: /* Data_Element: Data_Element_Array_List ASSIGN Expression */
3527 #line 680 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3528 {
3529 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3530 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3531 element->setInitializer(initializer);
3532 element->location = (*yylocp);
3533 (*yyvalp) = element;}
3534 #line 3535 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3535 break;
3536
3537 case 82: /* Data_Element: Data_Element_Array_List */
3538 #line 686 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3539 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3540 #line 3541 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3541 break;
3542
3543 case 83: /* Data_Element_Array_List: Data_Element_Array_List Data_Element_Array_Element */
3544 #line 690 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3545 {
3546 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3547 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3548 element->extraArrays.push_back(extraArray);
3549 element->location = (*yylocp);
3550 (*yyvalp) = element;}
3551 #line 3552 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3552 break;
3553
3554 case 84: /* Data_Element_Array_List: Identifier */
3555 #line 696 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3556 {
3557 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3558 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3559 element->identifier = name;
3560 if (!ParserHelper::isValidIdentifier(name->getValue()))
3561 yyerrmsg("ERROR: invalid identifier",name->location.first_line,name->location.first_column,name->getValue().c_str());
3562 element->doc_comment = std::move(name->doc_comment);
3563 if (!first_identifier_for_line) first_identifier_for_line = element;
3564 (*yyvalp) = element;
3565 }
3566 #line 3567 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3567 break;
3568
3569 case 85: /* Single_Data_req_assign: DataType Identifier ASSIGN Expression */
3570 #line 709 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3571 {
3572 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3573 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3574 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3575 element->identifier = name;
3576 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3577 element->setInitializer(initializer);
3578 element->baseType = type;
3579 element->location = (*yylocp);
3580 (*yyvalp) = element;}
3581 #line 3582 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3582 break;
3583
3584 case 86: /* Data_Element_Array_Element: LBRACKET Data_Element_Array_Element_Size_List RBRACKET */
3585 #line 722 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3586 {
3587 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3588 extraArray->location = (*yylocp);
3589 (*yyvalp) = extraArray;}
3590 #line 3591 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3591 break;
3592
3593 case 87: /* Data_Element_Array_Element: EMPTYBRACKETS */
3594 #line 726 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3595 {(*yyvalp) = new ASTDataDeclExtraArray((*yylocp));}
3596 #line 3597 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3597 break;
3598
3599 case 88: /* Data_Element_Array_Element_Size_List: Data_Element_Array_Element_Size_List COMMA Expression_Constant */
3600 #line 730 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3601 {
3602 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3603 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3604 extraArray->dimensions.push_back(size);
3605 extraArray->location = (*yylocp);
3606 (*yyvalp) = extraArray;}
3607 #line 3608 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3608 break;
3609
3610 case 89: /* Data_Element_Array_Element_Size_List: Expression_Constant */
3611 #line 736 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3612 {
3613 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3614 ASTDataDeclExtraArray* extraArray = new ASTDataDeclExtraArray((*yylocp));
3615 extraArray->dimensions.push_back(size);
3616 (*yyvalp) = extraArray;}
3617 #line 3618 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3618 break;
3619
3620 case 90: /* Function: CONSTEXPR Function */
3621 #line 748 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3622 {
3623 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3624 if(func->getFlag(FUNCFLAG_CONSTEXPR))
3625 {
3626 func->setFlag(FUNCFLAG_INVALID);
3627 func->invalidMsg += " Duplicate `constexpr`.";
3628 }
3629 func->setFlag(FUNCFLAG_CONSTEXPR);
3630 (*yyvalp) = func;
3631 }
3632 #line 3633 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3633 break;
3634
3635 case 91: /* Function: STATIC Function */
3636 #line 759 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3637 {
3638 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3639 if(func->getFlag(FUNCFLAG_STATIC))
3640 {
3641 func->setFlag(FUNCFLAG_INVALID);
3642 func->invalidMsg += " Duplicate `static`.";
3643 }
3644 else if(func->getFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CONSTRUCTOR))
3645 {
3646 func->setFlag(FUNCFLAG_INVALID);
3647 func->invalidMsg += " Constructors and destructors cannot be static.";
3648 }
3649 else func->setFlag(FUNCFLAG_STATIC);
3650 (*yyvalp) = func;
3651 }
3652 #line 3653 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3653 break;
3654
3655 case 92: /* Function: INLINE Function */
3656 #line 775 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3657 {
3658 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3659 if(func->getFlag(FUNCFLAG_INLINE))
3660 {
3661 func->setFlag(FUNCFLAG_INVALID);
3662 func->invalidMsg += " Duplicate `inline`.";
3663 }
3664 else func->setFlag(FUNCFLAG_INLINE);
3665 (*yyvalp) = func;
3666 }
3667 #line 3668 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3668 break;
3669
3670 case 93: /* Function: INTERNAL Function */
3671 #line 786 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3672 {
3673 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3674 if(func->getFlag(FUNCFLAG_INTERNAL))
3675 {
3676 func->setFlag(FUNCFLAG_INVALID);
3677 func->invalidMsg += " Duplicate `internal`.";
3678 }
3679 if(func->block)
3680 {
3681 func->setFlag(FUNCFLAG_INVALID);
3682 func->invalidMsg += " Internal function must not have a body.";
3683 }
3684 func->setFlag(FUNCFLAG_INTERNAL);
3685 func->prototype = false;
3686 (*yyvalp) = func;
3687 }
3688 #line 3689 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3689 break;
3690
3691 case 94: /* Function: DataType Function_Typeless */
3692 #line 802 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3693 {
3694 ASTDataType* returnType = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3695 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3696 if (!returnType->doc_comment.empty())
3697 func->doc_comment = std::move(returnType->doc_comment);
3698 func->returnType = returnType;
3699 (*yyvalp) = func;}
3700 #line 3701 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3701 break;
3702
3703 case 95: /* Function_Typeless: Function_Heading Statement_Block */
3704 #line 813 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3705 {
3706 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3707 func->block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3708 (*yyvalp) = func;}
3709 #line 3710 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3710 break;
3711
3712 case 96: /* Function_Typeless: Function_Heading SEMICOLON */
3713 #line 817 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3714 {
3715 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3716 func->prototype = true;
3717 func->defaultReturn = new ASTExprConst(new ASTExprCast(new ASTDataType(DataType::CUNTYPED, (*yylocp)), new ASTNumberLiteral(new ASTFloat(0, 0, (*yylocp)), (*yylocp)), (*yylocp)), (*yylocp));
3718 (*yyvalp) = func;}
3719 #line 3720 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3720 break;
3721
3722 case 97: /* Function_Typeless: Function_Heading COLON DEFAULT Expression_Constant SEMICOLON */
3723 #line 822 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3724 {
3725 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3726 func->prototype = true;
3727 func->defaultReturn = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3728 (*yyvalp) = func;}
3729 #line 3730 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3730 break;
3731
3732 case 98: /* Function_Heading: Identifier_List LPAREN Function_Parameters_List RPAREN */
3733 #line 830 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3734 {
3735 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3736 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3737 func->identifier = iden;
3738 func->location = (*yylocp);
3739 func->doc_comment = std::move(iden->doc_comment);
3740 (*yyvalp) = func;}
3741 #line 3742 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3742 break;
3743
3744 case 99: /* Function_Heading: Identifier_List LT FunctionTemplateList GT LPAREN Function_Parameters_List RPAREN */
3745 #line 838 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3746 {
3747 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
3748 ASTStringList* template_list = (ASTStringList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3749 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3750 func->identifier = iden;
3751 func->templates.swap(template_list->strings);
3752 delete template_list;
3753 func->location = (*yylocp);
3754 func->doc_comment = std::move(iden->doc_comment);
3755 (*yyvalp) = func;}
3756 #line 3757 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3757 break;
3758
3759 case 100: /* FunctionTemplateList: Identifier */
3760 #line 851 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3761 {
3762 ASTStringList* list = new ASTStringList((*yylocp));
3763 ASTString* templ = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3764 list->strings.push_back(templ);
3765 (*yyvalp) = list;}
3766 #line 3767 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3767 break;
3768
3769 case 101: /* FunctionTemplateList: FunctionTemplateList COMMA Identifier */
3770 #line 856 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3771 {
3772 ASTStringList* list = (ASTStringList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3773 ASTString* templ = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3774 list->location = (*yylocp);
3775 list->strings.push_back(templ);
3776 (*yyvalp) = list;}
3777 #line 3778 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3778 break;
3779
3780 case 102: /* Function_Parameters_List: Function_Parameters_Element COMMA Function_Parameters_List */
3781 #line 864 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3782 {
3783 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3784 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3785 push_front(func->parameters, param);
3786 func->location = (*yylocp);
3787 (*yyvalp) = func;}
3788 #line 3789 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3789 break;
3790
3791 case 103: /* Function_Parameters_List: Function_Parameters_Element */
3792 #line 870 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3793 {
3794 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3795 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3796 push_front(func->parameters, param);
3797 (*yyvalp) = func;}
3798 #line 3799 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3799 break;
3800
3801 case 104: /* Function_Parameters_List: Function_OptParams_List */
3802 #line 875 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3803 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3804 #line 3805 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3805 break;
3806
3807 case 105: /* Function_Parameters_List: Function_VarArg_Element */
3808 #line 876 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3809 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3810 #line 3811 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3811 break;
3812
3813 case 106: /* Function_Parameters_List: %empty */
3814 #line 877 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3815 {(*yyvalp) = new ASTFuncDecl((*yylocp));}
3816 #line 3817 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3817 break;
3818
3819 case 107: /* Function_Parameters_Element: DataType Identifier */
3820 #line 881 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3821 {
3822 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3823 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3824 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3825 element->identifier = name;
3826 element->baseType = type;
3827 (*yyvalp) = element;}
3828 #line 3829 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3829 break;
3830
3831 case 108: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression_Constant COMMA Function_OptParams_List */
3832 #line 891 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3833 {
3834 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3835 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3836 ASTExprConst* cval = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3837 push_front(func->parameters, param);
3838 push_front(func->optparams, cval);
3839 func->location = (*yylocp);
3840 (*yyvalp) = func;}
3841 #line 3842 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3842 break;
3843
3844 case 109: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression_Constant */
3845 #line 899 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3846 {
3847 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3848 ASTExprConst* cval = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3849 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3850 push_front(func->parameters, param);
3851 push_front(func->optparams, cval);
3852 (*yyvalp) = func;}
3853 #line 3854 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3854 break;
3855
3856 case 110: /* Function_VarArg_Element: RANGE Function_Parameters_Element */
3857 #line 909 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3858 {
3859 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3860 push_front(func->parameters, (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3861 func->setFlag(FUNCFLAG_VARARGS);
3862 (*yyvalp) = func;}
3863 #line 3864 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3864 break;
3865
3866 case 111: /* Class_Ident: IDENTIFIER */
3867 #line 918 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3868 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3869 #line 3870 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3870 break;
3871
3872 case 112: /* Class: ZCLASS Class_Ident Class_Block */
3873 #line 921 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3874 {
3875 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3876 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3877 user_class->location = (*yylocp);
3878 user_class->identifier = name;
3879 user_class->doc_comment = std::move(name->doc_comment);
3880 if (!first_identifier_for_line) first_identifier_for_line = user_class;
3881 (*yyvalp) = user_class;}
3882 #line 3883 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3883 break;
3884
3885 case 113: /* Class_Block: LBRACE Class_Block_List RBRACE */
3886 #line 932 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3887 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3888 #line 3889 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3889 break;
3890
3891 case 114: /* Class_Block: LBRACE RBRACE */
3892 #line 933 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3893 {(*yyvalp) = new ASTClass((*yylocp));}
3894 #line 3895 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3895 break;
3896
3897 case 115: /* Class_Block_List: Class_Block_List Class_Block_Element */
3898 #line 937 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3899 {
3900 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3901 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3902 user_class->addDeclaration(*declaration);
3903 user_class->location = (*yylocp);
3904 (*yyvalp) = user_class;}
3905 #line 3906 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3906 break;
3907
3908 case 116: /* Class_Block_List: Class_Block_List Option */
3909 #line 943 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3910 {
3911 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3912 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3913 user_class->options.push_back(option);
3914 user_class->location = (*yylocp);
3915 (*yyvalp) = user_class;
3916 if (!user_class->variables.empty()
3917 || !user_class->functions.empty()
3918 || !user_class->types.empty()) {
3919 yywarn("WARNING: Options should come before everything else.");}}
3920 #line 3921 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3921 break;
3922
3923 case 117: /* Class_Block_List: Class_Block_List Class_Constructor */
3924 #line 953 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3925 {
3926 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3927 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3928 user_class->constructors.push_back(func);
3929 (*yyvalp) = user_class;}
3930 #line 3931 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3931 break;
3932
3933 case 118: /* Class_Block_List: Class_Block_List Class_Destructor */
3934 #line 958 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3935 {
3936 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3937 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3938 if(user_class->destructor)
3939 {
3940 auto const& loc = func->location;
3941 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
3942 delete func;
3943 }
3944 else user_class->destructor = func;
3945 (*yyvalp) = user_class;}
3946 #line 3947 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3947 break;
3948
3949 case 119: /* Class_Block_List: Class_Block_Element */
3950 #line 969 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3951 {
3952 ASTClass* user_class = new ASTClass((*yylocp));
3953 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3954 user_class->addDeclaration(*declaration);
3955 (*yyvalp) = user_class;}
3956 #line 3957 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3957 break;
3958
3959 case 120: /* Class_Block_List: Option */
3960 #line 974 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3961 {
3962 ASTClass* user_class = new ASTClass((*yylocp));
3963 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3964 user_class->options.push_back(option);
3965 (*yyvalp) = user_class;}
3966 #line 3967 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3967 break;
3968
3969 case 121: /* Class_Block_List: Class_Constructor */
3970 #line 979 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3971 {
3972 ASTClass* user_class = new ASTClass((*yylocp));
3973 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3974 user_class->constructors.push_back(func);
3975 (*yyvalp) = user_class;}
3976 #line 3977 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3977 break;
3978
3979 case 122: /* Class_Block_List: Class_Destructor */
3980 #line 984 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3981 {
3982 ASTClass* user_class = new ASTClass((*yylocp));
3983 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3984 if(user_class->destructor)
3985 {
3986 auto const& loc = func->location;
3987 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
3988 delete func;
3989 }
3990 else user_class->destructor = func;
3991 (*yyvalp) = user_class;}
3992 #line 3993 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3993 break;
3994
3995 case 123: /* Class_Constructor: INTERNAL Class_Constructor */
3996 #line 998 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3997 {
3998 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3999 if(func->getFlag(FUNCFLAG_INTERNAL))
4000 {
4001 func->setFlag(FUNCFLAG_INVALID);
4002 func->invalidMsg += " Duplicate `internal`.";
4003 }
4004 else func->setFlag(FUNCFLAG_INTERNAL);
4005 func->prototype = false;
4006 (*yyvalp) = func;}
4007 #line 4008 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4008 break;
4009
4010 case 124: /* Class_Constructor: Function_Typeless */
4011 #line 1008 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4012 {
4013 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4014 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4015 func->returnType = returnType;
4016 func->setFlag(FUNCFLAG_CONSTRUCTOR|FUNCFLAG_CLASSFUNC);
4017 if(func->getFlag(FUNCFLAG_STATIC))
4018 {
4019 func->setFlag(FUNCFLAG_INVALID);
4020 func->invalidMsg += " Constructors and destructors cannot be static.";
4021 }
4022 (*yyvalp) = func;}
4023 #line 4024 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4024 break;
4025
4026 case 125: /* Class_Destructor: BITNOT Function_Typeless */
4027 #line 1021 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4028 {
4029 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4030 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4031 func->returnType = returnType;
4032 func->setFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CLASSFUNC);
4033 if(func->getFlag(FUNCFLAG_STATIC))
4034 {
4035 func->setFlag(FUNCFLAG_INVALID);
4036 func->invalidMsg += " Constructors and destructors cannot be static.";
4037 }
4038 (*yyvalp) = func;}
4039 #line 4040 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4040 break;
4041
4042 case 126: /* Class_Data: Data */
4043 #line 1035 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4044 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4045 #line 4046 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4046 break;
4047
4048 case 127: /* Class_Block_Element: Class_Data SEMICOLON */
4049 #line 1039 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4050 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4051 #line 4052 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4052 break;
4053
4054 case 128: /* Class_Block_Element: Function */
4055 #line 1040 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4056 {
4057 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4058 func->setFlag(FUNCFLAG_CLASSFUNC);
4059 (*yyvalp) = func;}
4060 #line 4061 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4061 break;
4062
4063 case 129: /* Class_Block_Element: DataTypeDef SEMICOLON */
4064 #line 1044 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4065 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4066 #line 4067 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4067 break;
4068
4069 case 130: /* Class_Block_Element: DataEnum SEMICOLON */
4070 #line 1045 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4071 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4072 #line 4073 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4073 break;
4074
4075 case 131: /* Class_Block_Element: Using SEMICOLON */
4076 #line 1046 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4077 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4078 #line 4079 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4079 break;
4080
4081 case 132: /* Class_Block_Element: Statement_Assert SEMICOLON */
4082 #line 1047 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4083 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4084 #line 4085 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4085 break;
4086
4087 case 133: /* Class_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Class_Block_Element */
4088 #line 1048 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4089 {
4090 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4091 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4092 declaration->compileErrorCatches.push_back(errorId);
4093 (*yyvalp) = declaration;}
4094 #line 4095 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4095 break;
4096
4097 case 134: /* Annotated_Script: Annotation_List Script */
4098 #line 1059 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4099 {
4100 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4101 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4102 handle_annotations(list, [&](AnnotData& data)
4103 {
4104 auto& key = data.key;
4105 if(key == "Author")
4106 {
4107 if(annot_type_check(ANNTY_STR, data))
4108 {
4109 annot_trunc_str(data.unescaped_val, 255);
4110 script->metadata.author = data.unescaped_val;
4111 }
4112 return true;
4113 }
4114 else if(key == "InitScript")
4115 {
4116 if(annot_type_check(ANNTY_INT, data))
4117 script->init_weight = data.intval;
4118 return true;
4119 }
4120 else if((key.size() == 5 || key.size() == 6) && !key.compare(0,4,"Flag"))
4121 {
4122 byte c = key[4]-'0';
4123 if(key.size() == 6)
4124 c = (c*10)+key[5]-'0';
4125 if(c < 16)
4126 {
4127 if(annot_type_check(ANNTY_STR, data))
4128 {
4129 annot_trunc_str(data.unescaped_val, 255);
4130 script->metadata.usrflags[c] = data.unescaped_val;
4131 }
4132 return true;
4133 }
4134 }
4135 else if((key.size() == 9 || key.size() == 10) && !key.compare(0,8,"FlagHelp"))
4136 {
4137 byte c = key[8]-'0';
4138 if(key.size() == 10)
4139 c = (c*10)+key[9]-'0';
4140 if(c < 16)
4141 {
4142 if(annot_type_check(ANNTY_STR, data))
4143 {
4144 annot_trunc_str(data.val, 65535);
4145 script->metadata.usrflags_help[c] = data.val;
4146 }
4147 return true;
4148 }
4149 }
4150 else if(key.size() == 6 && !key.compare(0,5,"InitD"))
4151 {
4152 byte c = key[5]-'0';
4153 if(c < 8)
4154 {
4155 if(annot_type_check(ANNTY_STR, data))
4156 {
4157 annot_trunc_str(data.unescaped_val, 255);
4158 script->metadata.initd[c] = data.unescaped_val;
4159 }
4160 return true;
4161 }
4162 }
4163 else if(key.size() == 10)
4164 {
4165 byte c = key[9]-'0';
4166 if(!key.compare(0,9,"InitDType"))
4167 {
4168 if(c < 8)
4169 {
4170 if(annot_type_check(ANNTY_STR, data))
4171 {
4172 int8_t v = -1;
4173 upperstr(data.val);
4174 if(data.val.size() == 2 && data.val[0] == 'L')
4175 {
4176 switch(data.val[1])
4177 {
4178 case 'D': v = nswapLDEC; break;
4179 case 'H': v = nswapLHEX; break;
4180 }
4181 }
4182 else if(data.val.size() == 1)
4183 {
4184 switch(data.val[0])
4185 {
4186 case 'D': v = nswapDEC; break;
4187 case 'H': v = nswapHEX; break;
4188 case 'B': v = nswapBOOL; break;
4189 }
4190 }
4191 if(unsigned(v) < nswapMAX)
4192 script->metadata.initd_type[c] = v;
4193 else if(data.val == "-1")
4194 script->metadata.initd_type[c] = -1;
4195 else annot_errstr("ERROR: Bad Annotation Value: '@" + key + "' must be"
4196 " exactly 'D','H','LD','LH','B', or '-1' NOT '" + data.strval + "'.");
4197 }
4198 return true;
4199 }
4200 }
4201 else if(!key.compare(0,9,"InitDHelp"))
4202 {
4203 if(c < 8)
4204 {
4205 if(annot_type_check(ANNTY_STR, data))
4206 {
4207 annot_trunc_str(data.val, 65535);
4208 script->metadata.initd_help[c] = data.val;
4209 }
4210 return true;
4211 }
4212 }
4213 else if(!key.compare(0,9,"Attribute"))
4214 {
4215 if(c < 10)
4216 {
4217 if(annot_type_check(ANNTY_STR, data))
4218 {
4219 annot_trunc_str(data.unescaped_val, 255);
4220 script->metadata.attributes[c] = data.unescaped_val;
4221 }
4222 return true;
4223 }
4224 }
4225 else if(!key.compare(0,9,"Attribyte"))
4226 {
4227 if(c < 8)
4228 {
4229 if(annot_type_check(ANNTY_STR, data))
4230 {
4231 annot_trunc_str(data.unescaped_val, 255);
4232 script->metadata.attribytes[c] = data.unescaped_val;
4233 }
4234 return true;
4235 }
4236 }
4237 }
4238 else if(key.size() == 11 && !key.compare(0,10,"Attrishort"))
4239 {
4240 byte c = key[10]-'0';
4241 if(c < 8)
4242 {
4243 if(annot_type_check(ANNTY_STR, data))
4244 {
4245 annot_trunc_str(data.unescaped_val, 255);
4246 script->metadata.attrishorts[c] = data.unescaped_val;
4247 }
4248 return true;
4249 }
4250 }
4251 else if(key.size() == 14)
4252 {
4253 if(!key.compare(0,13,"AttributeHelp"))
4254 {
4255 byte c = key[13]-'0';
4256 if(c < 10)
4257 {
4258 if(annot_type_check(ANNTY_STR, data))
4259 {
4260 annot_trunc_str(data.val, 65535);
4261 script->metadata.attributes_help[c] = data.val;
4262 }
4263 return true;
4264 }
4265 }
4266 else if(!key.compare(0,13,"AttribyteHelp"))
4267 {
4268 byte c = key[13]-'0';
4269 if(c < 8)
4270 {
4271 if(annot_type_check(ANNTY_STR, data))
4272 {
4273 annot_trunc_str(data.val, 65535);
4274 script->metadata.attribytes_help[c] = data.val;
4275 }
4276 return true;
4277 }
4278 }
4279 }
4280 else if(key.size() == 15 && !key.compare(0,14,"AttrishortHelp"))
4281 {
4282 byte c = key[14]-'0';
4283 if(c < 8)
4284 {
4285 if(annot_type_check(ANNTY_STR, data))
4286 {
4287 annot_trunc_str(data.val, 65535);
4288 script->metadata.attrishorts_help[c] = data.val;
4289 }
4290 return true;
4291 }
4292 }
4293 return false;
4294 });
4295 (*yyvalp) = script;}
4296 #line 4297 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4297 break;
4298
4299 case 135: /* Script: Script_Type SCRIPT IDENTIFIER Script_Block */
4300 #line 1259 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4301 {
4302 ASTScriptType* type = (ASTScriptType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4303 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4304 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4305 script->identifier = name;
4306 script->type = type;
4307 script->metadata.script_name = name->getValue();
4308 script->location = (*yylocp);
4309 (*yyvalp) = script;}
4310 #line 4311 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4311 break;
4312
4313 case 136: /* Script_Type: IDENTIFIER */
4314 #line 1272 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4315 {
4316 ASTString* name = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4317 (*yyvalp) = new ASTScriptType(name->getValue(), (*yylocp));
4318 delete name;}
4319 #line 4320 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4320 break;
4321
4322 case 137: /* Script_Block: LBRACE Script_Block_List RBRACE */
4323 #line 1279 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4324 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4325 #line 4326 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4326 break;
4327
4328 case 138: /* Script_Block: LBRACE RBRACE */
4329 #line 1280 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4330 {(*yyvalp) = new ASTScript((*yylocp));}
4331 #line 4332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4332 break;
4333
4334 case 139: /* Script_Block_List: Script_Block_List Script_Block_Element */
4335 #line 1284 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4336 {
4337 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4338 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4339 script->addDeclaration(*declaration);
4340 script->location = (*yylocp);
4341 (*yyvalp) = script;}
4342 #line 4343 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4343 break;
4344
4345 case 140: /* Script_Block_List: Script_Block_List Option */
4346 #line 1290 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4347 {
4348 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4349 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4350 script->options.push_back(option);
4351 script->location = (*yylocp);
4352 (*yyvalp) = script;
4353 if (!script->variables.empty()
4354 || !script->functions.empty()
4355 || !script->types.empty()) {
4356 yywarn("WARNING: Options should come before everything else.");}}
4357 #line 4358 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4358 break;
4359
4360 case 141: /* Script_Block_List: Script_Block_Element */
4361 #line 1300 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4362 {
4363 ASTScript* script = new ASTScript((*yylocp));
4364 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4365 script->addDeclaration(*declaration);
4366 (*yyvalp) = script;}
4367 #line 4368 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4368 break;
4369
4370 case 142: /* Script_Block_List: Option */
4371 #line 1305 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4372 {
4373 ASTScript* script = new ASTScript((*yylocp));
4374 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4375 script->options.push_back(option);
4376 (*yyvalp) = script;}
4377 #line 4378 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4378 break;
4379
4380 case 143: /* Script_Block_Element: Data SEMICOLON */
4381 #line 1313 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4382 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4383 #line 4384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4384 break;
4385
4386 case 144: /* Script_Block_Element: Function */
4387 #line 1314 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4388 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4389 #line 4390 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4390 break;
4391
4392 case 145: /* Script_Block_Element: DataTypeDef SEMICOLON */
4393 #line 1315 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4394 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4395 #line 4396 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4396 break;
4397
4398 case 146: /* Script_Block_Element: DataEnum SEMICOLON */
4399 #line 1316 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4400 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4401 #line 4402 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4402 break;
4403
4404 case 147: /* Script_Block_Element: Using SEMICOLON */
4405 #line 1317 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4406 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4407 #line 4408 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4408 break;
4409
4410 case 148: /* Script_Block_Element: Statement_Assert SEMICOLON */
4411 #line 1318 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4412 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4413 #line 4414 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4414 break;
4415
4416 case 149: /* Script_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Script_Block_Element */
4417 #line 1319 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4418 {
4419 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4420 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4421 declaration->compileErrorCatches.push_back(errorId);
4422 (*yyvalp) = declaration;}
4423 #line 4424 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4424 break;
4425
4426 case 150: /* Annotation_List: Annotation_List COMMA Annotation */
4427 #line 1327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4428 {
4429 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4430 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4431 (*yyvalp) = list;}
4432 #line 4433 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4433 break;
4434
4435 case 151: /* Annotation_List: Annotation */
4436 #line 1331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4437 {
4438 ASTAnnotationList* list = new ASTAnnotationList((*yylocp));
4439 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4440 (*yyvalp) = list;}
4441 #line 4442 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4442 break;
4443
4444 case 152: /* Annotation: HANDLE IDENTIFIER LPAREN QuotedString RPAREN */
4445 #line 1338 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4446 {
4447 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4448 ASTString* val = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4449 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4450 (*yyvalp) = a;}
4451 #line 4452 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4452 break;
4453
4454 case 153: /* Annotation: HANDLE IDENTIFIER LPAREN NUMBER RPAREN */
4455 #line 1343 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4456 {
4457 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4458 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4459 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4460 (*yyvalp) = a;}
4461 #line 4462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4462 break;
4463
4464 case 154: /* Annotation: HANDLE IDENTIFIER LPAREN LONGNUMBER RPAREN */
4465 #line 1348 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4466 {
4467 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4468 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4469 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4470 (*yyvalp) = a;}
4471 #line 4472 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4472 break;
4473
4474 case 155: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS NUMBER RPAREN */
4475 #line 1353 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4476 {
4477 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4478 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4479 val->negative = !val->negative;
4480 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4481 (*yyvalp) = a;}
4482 #line 4483 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4483 break;
4484
4485 case 156: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS LONGNUMBER RPAREN */
4486 #line 1359 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4487 {
4488 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4489 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4490 val->negative = !val->negative;
4491 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4492 (*yyvalp) = a;}
4493 #line 4494 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4494 break;
4495
4496 case 157: /* Annotation: HANDLE IDENTIFIER LPAREN RPAREN */
4497 #line 1365 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4498 {
4499 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4500 ASTAnnotation* a = new ASTAnnotation(key, (*yylocp));
4501 (*yyvalp) = a;}
4502 #line 4503 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4503 break;
4504
4505 case 158: /* Block_Statement: Statement */
4506 #line 1375 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4507 {
4508 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4509 if(ASTBlock* existing_block = dynamic_cast<ASTBlock*>(stmt))
4510 {
4511 (*yyvalp) = existing_block;
4512 }
4513 else
4514 {
4515 ASTBlock* block = new ASTBlock((*yylocp));
4516 block->statements.push_back(stmt);
4517 (*yyvalp) = block;
4518 }
4519 }
4520 #line 4521 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4521 break;
4522
4523 case 159: /* Statement: Data SEMICOLON */
4524 #line 1392 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4525 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4526 #line 4527 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4527 break;
4528
4529 case 160: /* Statement: DataTypeDef SEMICOLON */
4530 #line 1393 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4531 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4532 #line 4533 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4533 break;
4534
4535 case 161: /* Statement: DataEnum SEMICOLON */
4536 #line 1394 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4537 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4538 #line 4539 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4539 break;
4540
4541 case 162: /* Statement: Using SEMICOLON */
4542 #line 1395 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4543 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4544 #line 4545 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4545 break;
4546
4547 case 163: /* Statement: Statement_Expression SEMICOLON */
4548 #line 1397 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4549 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4550 #line 4551 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4551 break;
4552
4553 case 164: /* Statement: Statement_Block */
4554 #line 1398 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4555 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4556 #line 4557 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4557 break;
4558
4559 case 165: /* Statement: Statement_If */
4560 #line 1399 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4561 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4562 #line 4563 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4563 break;
4564
4565 case 166: /* Statement: Statement_Switch */
4566 #line 1400 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4567 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4568 #line 4569 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4569 break;
4570
4571 case 167: /* Statement: Statement_For */
4572 #line 1401 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4573 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4574 #line 4575 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4575 break;
4576
4577 case 168: /* Statement: Annotated_Loop */
4578 #line 1402 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4579 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4580 #line 4581 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4581 break;
4582
4583 case 169: /* Statement: Statement_While */
4584 #line 1403 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4585 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4586 #line 4587 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4587 break;
4588
4589 case 170: /* Statement: Statement_Do */
4590 #line 1404 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4591 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4592 #line 4593 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4593 break;
4594
4595 case 171: /* Statement: Statement_Repeat */
4596 #line 1405 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4597 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4598 #line 4599 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4599 break;
4600
4601 case 172: /* Statement: Statement_Return SEMICOLON */
4602 #line 1406 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4603 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4604 #line 4605 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4605 break;
4606
4607 case 173: /* Statement: BREAK SEMICOLON */
4608 #line 1407 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4609 {(*yyvalp) = new ASTStmtBreak(NULL, (*yylocp));}
4610 #line 4611 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4611 break;
4612
4613 case 174: /* Statement: BREAK NUMBER SEMICOLON */
4614 #line 1408 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4615 {
4616 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4617 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4618 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4619 }
4620 #line 4621 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4621 break;
4622
4623 case 175: /* Statement: CONTINUE SEMICOLON */
4624 #line 1413 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4625 {(*yyvalp) = new ASTStmtContinue(NULL, (*yylocp));}
4626 #line 4627 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4627 break;
4628
4629 case 176: /* Statement: CONTINUE NUMBER SEMICOLON */
4630 #line 1414 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4631 {
4632 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4633 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4634 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4635 }
4636 #line 4637 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4637 break;
4638
4639 case 177: /* Statement: SEMICOLON */
4640 #line 1419 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4641 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4642 #line 4643 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4643 break;
4644
4645 case 178: /* Statement: Statement_CompileError SEMICOLON */
4646 #line 1420 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4647 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4648 #line 4649 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4649 break;
4650
4651 case 179: /* Statement: Statement_Assert SEMICOLON */
4652 #line 1421 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4653 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4654 #line 4655 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4655 break;
4656
4657 case 180: /* Statement_NoSemicolon: Data */
4658 #line 1426 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4659 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4660 #line 4661 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4661 break;
4662
4663 case 181: /* Statement_NoSemicolon: DataTypeDef */
4664 #line 1427 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4665 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4666 #line 4667 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4667 break;
4668
4669 case 182: /* Statement_NoSemicolon: DataEnum */
4670 #line 1428 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4671 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4672 #line 4673 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4673 break;
4674
4675 case 183: /* Statement_NoSemicolon: Statement_Expression */
4676 #line 1430 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4677 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4678 #line 4679 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4679 break;
4680
4681 case 184: /* Statement_NoSemicolon: Statement_Block */
4682 #line 1431 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4683 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4684 #line 4685 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4685 break;
4686
4687 case 185: /* Statement_NoSemicolon: Statement_If */
4688 #line 1432 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4689 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4690 #line 4691 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4691 break;
4692
4693 case 186: /* Statement_NoSemicolon: Statement_Switch */
4694 #line 1433 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4695 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4696 #line 4697 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4697 break;
4698
4699 case 187: /* Statement_NoSemicolon: Statement_For */
4700 #line 1434 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4701 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4702 #line 4703 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4703 break;
4704
4705 case 188: /* Statement_NoSemicolon: Annotated_Loop */
4706 #line 1435 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4707 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4708 #line 4709 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4709 break;
4710
4711 case 189: /* Statement_NoSemicolon: Statement_While */
4712 #line 1436 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4713 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4714 #line 4715 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4715 break;
4716
4717 case 190: /* Statement_NoSemicolon: Statement_Do */
4718 #line 1437 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4719 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4720 #line 4721 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4721 break;
4722
4723 case 191: /* Statement_NoSemicolon: Statement_Return */
4724 #line 1438 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4725 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4726 #line 4727 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4727 break;
4728
4729 case 192: /* Statement_NoSemicolon: BREAK */
4730 #line 1439 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4731 {(*yyvalp) = new ASTStmtBreak(NULL,(*yylocp));}
4732 #line 4733 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4733 break;
4734
4735 case 193: /* Statement_NoSemicolon: BREAK NUMBER */
4736 #line 1440 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4737 {
4738 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4739 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4740 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4741 }
4742 #line 4743 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4743 break;
4744
4745 case 194: /* Statement_NoSemicolon: CONTINUE */
4746 #line 1445 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4747 {(*yyvalp) = new ASTStmtContinue(NULL,(*yylocp));}
4748 #line 4749 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4749 break;
4750
4751 case 195: /* Statement_NoSemicolon: CONTINUE NUMBER */
4752 #line 1446 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4753 {
4754 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4755 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4756 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4757 }
4758 #line 4759 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4759 break;
4760
4761 case 196: /* Statement_NoSemicolon: %empty */
4762 #line 1451 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4763 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4764 #line 4765 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4765 break;
4766
4767 case 197: /* Statement_NoSemicolon: Statement_CompileError */
4768 #line 1452 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4769 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4770 #line 4771 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4771 break;
4772
4773 case 198: /* Statement_Block: LBRACE Statement_Block_List RBRACE */
4774 #line 1456 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4775 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4776 #line 4777 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4777 break;
4778
4779 case 199: /* Statement_Block: LBRACE RBRACE */
4780 #line 1457 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4781 {(*yyvalp) = new ASTBlock((*yylocp));}
4782 #line 4783 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4783 break;
4784
4785 case 200: /* Statement_Block_List: Statement_Block_List Statement */
4786 #line 1461 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4787 {
4788 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4789 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4790 block->statements.push_back(stmt);
4791 (*yyvalp) = block;}
4792 #line 4793 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4793 break;
4794
4795 case 201: /* Statement_Block_List: Statement_Block_List Option */
4796 #line 1466 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4797 {
4798 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4799 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4800 block->options.push_back(option);
4801 (*yyvalp) = block;
4802 if (!block->statements.empty()) {
4803 yywarn("WARNING: Options should come before everything else.");}}
4804 #line 4805 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4805 break;
4806
4807 case 202: /* Statement_Block_List: Statement */
4808 #line 1473 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4809 {
4810 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4811 ASTBlock* block = new ASTBlock((*yylocp));
4812 block->statements.push_back(stmt);
4813 (*yyvalp) = block;}
4814 #line 4815 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4815 break;
4816
4817 case 203: /* Statement_Block_List: Option */
4818 #line 1478 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4819 {
4820 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4821 ASTBlock* block = new ASTBlock((*yylocp));
4822 block->options.push_back(option);
4823 (*yyvalp) = block;}
4824 #line 4825 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4825 break;
4826
4827 case 204: /* Statement_If: IF If_Body */
4828 #line 1486 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4829 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4830 #line 4831 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4831 break;
4832
4833 case 205: /* Statement_If: UNLESS If_Body */
4834 #line 1487 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4835 {
4836 ASTStmtIf* stmt = (ASTStmtIf*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4837 stmt->invert();
4838 (*yyvalp) = stmt;
4839 }
4840 #line 4841 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4841 break;
4842
4843 case 206: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement */
4844 #line 1495 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4845 {
4846 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4847 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4848 (*yyvalp) = new ASTStmtIf(decl, stmt, (*yylocp));}
4849 #line 4850 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4850 break;
4851
4852 case 207: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement ELSE Block_Statement */
4853 #line 1499 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4854 {
4855 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4856 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4857 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4858 (*yyvalp) = new ASTStmtIfElse(decl, thenStatement, elseStatement, (*yylocp));}
4859 #line 4860 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4860 break;
4861
4862 case 208: /* If_Body: LPAREN Expression RPAREN Block_Statement */
4863 #line 1504 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4864 {
4865 ASTExpr* cond = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4866 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4867 (*yyvalp) = new ASTStmtIf(cond, stmt, (*yylocp));}
4868 #line 4869 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4869 break;
4870
4871 case 209: /* If_Body: LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
4872 #line 1508 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4873 {
4874 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4875 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4876 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4877 (*yyvalp) = new ASTStmtIfElse(test, thenStatement, elseStatement, (*yylocp));}
4878 #line 4879 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4879 break;
4880
4881 case 210: /* Statement_Switch: SWITCH LPAREN Expression RPAREN LBRACE Statement_Switch_Body RBRACE */
4882 #line 1516 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4883 {
4884 ASTExpr* key = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4885 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4886 sw->key = key;
4887 (*yyvalp) = sw;}
4888 #line 4889 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4889 break;
4890
4891 case 211: /* Statement_Switch_Body: Statement_Switch_Body Statement_Switch_Cases Statement_Block_List */
4892 #line 1523 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4893 {
4894 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4895 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4896 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4897 cases->block = block;
4898 sw->cases.push_back(cases);
4899 (*yyvalp) = sw;}
4900 #line 4901 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4901 break;
4902
4903 case 212: /* Statement_Switch_Body: Statement_Switch_Cases Statement_Block_List */
4904 #line 1530 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4905 {
4906 ASTStmtSwitch* sw = new ASTStmtSwitch((*yylocp));
4907 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4908 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4909 cases->block = block;
4910 sw->cases.push_back(cases);
4911 (*yyvalp) = sw;}
4912 #line 4913 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4913 break;
4914
4915 case 213: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Constant COLON */
4916 #line 1540 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4917 {
4918 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4919 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4920 cases->cases.push_back(key);
4921 (*yyvalp) = cases;}
4922 #line 4923 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4923 break;
4924
4925 case 214: /* Statement_Switch_Cases: Statement_Switch_Cases DEFAULT COLON */
4926 #line 1545 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4927 {
4928 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4929 cases->isDefault = true;
4930 (*yyvalp) = cases;}
4931 #line 4932 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4932 break;
4933
4934 case 215: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Const_Range COLON */
4935 #line 1549 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4936 {
4937 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4938 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4939 cases->ranges.push_back(range);
4940 (*yyvalp) = cases;}
4941 #line 4942 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4942 break;
4943
4944 case 216: /* Statement_Switch_Cases: Statement_Switch_Cases CASE CASESTRING COLON */
4945 #line 1554 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4946 {
4947 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4948 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
4949 delete rawstring;
4950 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4951 cases->str_cases.push_back(key);
4952 (*yyvalp) = cases;}
4953 #line 4954 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4954 break;
4955
4956 case 217: /* Statement_Switch_Cases: CASE Expression_Constant COLON */
4957 #line 1561 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4958 {
4959 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4960 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4961 cases->cases.push_back(key);
4962 (*yyvalp) = cases;}
4963 #line 4964 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4964 break;
4965
4966 case 218: /* Statement_Switch_Cases: CASE Expression_Const_Range COLON */
4967 #line 1566 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4968 {
4969 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4970 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4971 cases->ranges.push_back(range);
4972 (*yyvalp) = cases;}
4973 #line 4974 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4974 break;
4975
4976 case 219: /* Statement_Switch_Cases: CASE CASESTRING COLON */
4977 #line 1571 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4978 {
4979 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4980 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4981 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
4982 delete rawstring;
4983 cases->str_cases.push_back(key);
4984 (*yyvalp) = cases;}
4985 #line 4986 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4986 break;
4987
4988 case 220: /* Statement_Switch_Cases: DEFAULT COLON */
4989 #line 1578 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4990 {
4991 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4992 cases->isDefault = true;
4993 (*yyvalp) = cases;}
4994 #line 4995 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4995 break;
4996
4997 case 221: /* Statement_For: Statement_For_Standard */
4998 #line 1585 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4999 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5000 #line 5001 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5001 break;
5002
5003 case 222: /* Statement_For: Statement_For_Each */
5004 #line 1586 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5005 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5006 #line 5007 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5007 break;
5008
5009 case 223: /* Statement_CommaList: Statement_CommaList COMMA Statement_NoSemicolon */
5010 #line 1590 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5011 {
5012 ASTNodeList<ASTStmt>* list = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5013 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5014 (*yyvalp) = list;
5015 }
5016 #line 5017 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5017 break;
5018
5019 case 224: /* Statement_CommaList: Statement_NoSemicolon */
5020 #line 1595 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5021 {
5022 ASTNodeList<ASTStmt>* list = new ASTNodeList<ASTStmt>();
5023 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5024 (*yyvalp) = list;
5025 }
5026 #line 5027 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5027 break;
5028
5029 case 225: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement */
5030 #line 1608 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5031 {
5032 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5033 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5034 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5035 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5036 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, nullptr, (*yylocp));
5037 }
5038 #line 5039 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5039 break;
5040
5041 case 226: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement ELSE Block_Statement */
5042 #line 1620 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5043 {
5044 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-8)].yystate.yysemantics.yyval;
5045 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5046 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5047 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5048 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5049 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, elseStatement, (*yylocp));
5050 }
5051 #line 5052 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5052 break;
5053
5054 case 227: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement */
5055 #line 1633 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5056 {
5057 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5058 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5059 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5060
5061 (*yyvalp) = new ASTStmtForEach(iden, expr, body, nullptr, (*yylocp));
5062 }
5063 #line 5064 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5064 break;
5065
5066 case 228: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement ELSE Block_Statement */
5067 #line 1642 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5068 {
5069 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5070 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5071 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5072 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5073
5074 (*yyvalp) = new ASTStmtForEach(iden, expr, body, elseblock, (*yylocp));
5075 }
5076 #line 5077 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5077 break;
5078
5079 case 229: /* Annotated_Loop: Annotation_List Statement_Loop */
5080 #line 1653 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5081 {
5082 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5083 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5084 handle_annotations(list, [&](AnnotData& data)
5085 {
5086 auto& key = data.key;
5087 if(key == "AlwaysRunEndpoint")
5088 {
5089 if(annot_type_check(ANNTY_STR, data))
5090 {
5091 if(data.strval == "off")
5092 loop->overflow = ASTStmtRangeLoop::OVERFLOW_ALLOW;
5093 else if(data.strval == "int")
5094 loop->overflow = ASTStmtRangeLoop::OVERFLOW_INT;
5095 else if(data.strval == "long" || data.strval == "float")
5096 loop->overflow = ASTStmtRangeLoop::OVERFLOW_LONG;
5097 else annot_errstr(annot_err_header+": '@"+key+"' must be"
5098 " exactly 'off','int','float', or 'long', NOT '" + data.strval + "'.");
5099 }
5100 return true;
5101 }
5102 return false;
5103 });
5104 (*yyvalp) = loop;}
5105 #line 5106 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5106 break;
5107
5108 case 230: /* Annotated_Loop: Statement_Loop */
5109 #line 1677 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5110 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5111 #line 5112 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5112 break;
5113
5114 case 231: /* Statement_Loop: Statement_Loop_Inf */
5115 #line 1681 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5116 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5117 #line 5118 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5118 break;
5119
5120 case 232: /* Statement_Loop: Statement_Loop_Range */
5121 #line 1682 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5122 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5123 #line 5124 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5124 break;
5125
5126 case 233: /* Statement_Loop_Inf: LOOP LPAREN RPAREN Block_Statement */
5127 #line 1687 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5128 {
5129 ASTExpr* test = new ASTBoolLiteral(true, (*yylocp));
5130 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5131 (*yyvalp) = new ASTStmtWhile(test,body,nullptr,(*yylocp));
5132 }
5133 #line 5134 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5134 break;
5135
5136 case 234: /* Statement_Loop_Range: Statement_Loop_Range_Base ELSE Block_Statement */
5137 #line 1695 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5138 {
5139 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5140 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5141 loop->elseBlock = elseblock;
5142 (*yyvalp) = loop;
5143 }
5144 #line 5145 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5145 break;
5146
5147 case 235: /* Statement_Loop_Range: Statement_Loop_Range_Base */
5148 #line 1701 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5149 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5150 #line 5151 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5151 break;
5152
5153 case 236: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5154 #line 1706 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5155 {
5156 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
5157 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5158 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5159 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5160 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5161 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5162 }
5163 #line 5164 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5164 break;
5165
5166 case 237: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5167 #line 1715 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5168 {
5169 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5170 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5171 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5172 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5173 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5174 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5175 }
5176 #line 5177 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5177 break;
5178
5179 case 238: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range COMMA Expression RPAREN Block_Statement */
5180 #line 1724 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5181 {
5182 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5183 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5184 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5185 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5186 (*yyvalp) = new ASTStmtRangeLoop(type, new ASTString("__LOOP_ITER", (*yylocp)), range, incr, body, (*yylocp));
5187 }
5188 #line 5189 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5189 break;
5190
5191 case 239: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5192 #line 1732 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5193 {
5194 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
5195 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5196 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5197 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5198 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5199 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5200 }
5201 #line 5202 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5202 break;
5203
5204 case 240: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5205 #line 1741 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5206 {
5207 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5208 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5209 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5210 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5211 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5212 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5213 }
5214 #line 5215 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5215 break;
5216
5217 case 241: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range RPAREN Block_Statement */
5218 #line 1750 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5219 {
5220 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5221 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5222 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5223 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5224 (*yyvalp) = new ASTStmtRangeLoop(type, new ASTString("__LOOP_ITER", (*yylocp)), range, incr, body, (*yylocp));
5225 }
5226 #line 5227 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5227 break;
5228
5229 case 242: /* Token_In: COLON */
5230 #line 1760 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5231 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5232 #line 5233 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5233 break;
5234
5235 case 243: /* Token_In: IN */
5236 #line 1761 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5237 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5238 #line 5239 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5239 break;
5240
5241 case 244: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement */
5242 #line 1765 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5243 {
5244 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5245 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5246 (*yyvalp) = new ASTStmtWhile(test, body, nullptr, (*yylocp));}
5247 #line 5248 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5248 break;
5249
5250 case 245: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5251 #line 1769 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5252 {
5253 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5254 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5255 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5256 (*yyvalp) = new ASTStmtWhile(test, body, elseblock, (*yylocp));}
5257 #line 5258 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5258 break;
5259
5260 case 246: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement */
5261 #line 1774 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5262 {
5263 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5264 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5265 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, nullptr, (*yylocp));
5266 stmt->invert();
5267 (*yyvalp) = stmt;}
5268 #line 5269 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5269 break;
5270
5271 case 247: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5272 #line 1780 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5273 {
5274 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5275 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5276 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5277 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, elseblock, (*yylocp));
5278 stmt->invert();
5279 (*yyvalp) = stmt;}
5280 #line 5281 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5281 break;
5282
5283 case 248: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN */
5284 #line 1790 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5285 {
5286 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5287 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5288 (*yyvalp) = new ASTStmtDo(test, body, nullptr, (*yylocp));}
5289 #line 5290 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5290 break;
5291
5292 case 249: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN ELSE Block_Statement */
5293 #line 1794 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5294 {
5295 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5296 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5297 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5298 (*yyvalp) = new ASTStmtDo(test, body, elseblock, (*yylocp));}
5299 #line 5300 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5300 break;
5301
5302 case 250: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN */
5303 #line 1799 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5304 {
5305 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5306 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5307 ASTStmtDo* stmt = new ASTStmtDo(test, body, nullptr, (*yylocp));
5308 stmt->invert();
5309 (*yyvalp) = stmt;}
5310 #line 5311 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5311 break;
5312
5313 case 251: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN ELSE Block_Statement */
5314 #line 1805 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5315 {
5316 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5317 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5318 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5319 ASTStmtDo* stmt = new ASTStmtDo(test, body, elseblock, (*yylocp));
5320 stmt->invert();
5321 (*yyvalp) = stmt;}
5322 #line 5323 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5323 break;
5324
5325 case 252: /* Statement_Repeat: REPEAT LPAREN Expression_Constant RPAREN Statement */
5326 #line 1815 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5327 {
5328 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5329 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5330 (*yyvalp) = new ASTStmtRepeat(expr, body, (*yylocp));}
5331 #line 5332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5332 break;
5333
5334 case 253: /* Statement_Return: RETURN Expression */
5335 #line 1822 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5336 {
5337 ASTExpr* value = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5338 (*yyvalp) = new ASTStmtReturnVal(value, (*yylocp));}
5339 #line 5340 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5340 break;
5341
5342 case 254: /* Statement_Return: RETURN */
5343 #line 1825 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5344 {(*yyvalp) = new ASTStmtReturn((*yylocp));}
5345 #line 5346 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5346 break;
5347
5348 case 255: /* Statement_CompileError: EXPECTERROR LPAREN Expression_Constant RPAREN Statement_NoSemicolon */
5349 #line 1829 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5350 {
5351 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5352 ASTStmt* statement = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5353 statement->compileErrorCatches.push_back(errorId);
5354 (*yyvalp) = statement;}
5355 #line 5356 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5356 break;
5357
5358 case 256: /* DataEnum: ENUM LBRACE Enum_Block RBRACE */
5359 #line 1837 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5360 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5361 #line 5362 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5362 break;
5363
5364 case 257: /* DataEnum: ENUM ASSIGN DataType LBRACE Enum_Block RBRACE */
5365 #line 1838 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5366 {
5367 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5368 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5369 type->constant_ = 1; //force to be constant, skip `const const` errors
5370 list->baseType = type;
5371 (*yyvalp) = list;}
5372 #line 5373 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5373 break;
5374
5375 case 258: /* Enum_Block: Enum_Block COMMA Data_Element */
5376 #line 1846 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5377 {
5378 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5379 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5380 list->addDeclaration(element);
5381 list->location = (*yylocp);
5382 (*yyvalp) = list;}
5383 #line 5384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5384 break;
5385
5386 case 259: /* Enum_Block: Data_Element */
5387 #line 1852 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5388 {
5389 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5390 ASTDataEnum* list = new ASTDataEnum((*yylocp));
5391 list->addDeclaration(element);
5392 (*yyvalp) = list;}
5393 #line 5394 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5394 break;
5395
5396 case 260: /* ScopeRes: SCOPERES */
5397 #line 1904 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5398 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5399 #line 5400 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5400 break;
5401
5402 case 261: /* Identifier_List: Mixed_Identifier_List */
5403 #line 1909 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5404 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5405 #line 5406 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5406 break;
5407
5408 case 262: /* Identifier_List: idlist_scopres */
5409 #line 1910 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5410 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5411 #line 5412 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5412 break;
5413
5414 case 263: /* Identifier_List: idlist_dot */
5415 #line 1911 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5416 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5417 #line 5418 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5418 break;
5419
5420 case 264: /* Identifier_List: Ambigious_Iden_List */
5421 #line 1912 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5422 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5423 #line 5424 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5424 break;
5425
5426 case 265: /* Scoperes_Identifier_List: idlist_scopres */
5427 #line 1916 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5428 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5429 #line 5430 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5430 break;
5431
5432 case 266: /* Scoperes_Identifier_List: Ambigious_Iden_List */
5433 #line 1917 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5434 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5435 #line 5436 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5436 break;
5437
5438 case 267: /* Mixed_Identifier_List: Mixed_Identifier_List DOT Identifier */
5439 #line 1926 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5440 {
5441 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5442 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5443 identifier->components.push_back(name->getValue());
5444 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5445 identifier->delimiters.push_back(".");
5446 identifier->location = (*yylocp);
5447 (*yyvalp) = identifier;}
5448 #line 5449 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5449 break;
5450
5451 case 268: /* Mixed_Identifier_List: idlist_scopres DOT Identifier */
5452 #line 1934 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5453 {
5454 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5455 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5456 identifier->components.push_back(name->getValue());
5457 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5458 identifier->delimiters.push_back(".");
5459 identifier->location = (*yylocp);
5460 (*yyvalp) = identifier;}
5461 #line 5462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5462 break;
5463
5464 case 269: /* Mixed_Identifier_List: Mixed_Identifier_List ScopeRes Identifier */
5465 #line 1942 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5466 {
5467 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5468 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5469 identifier->components.push_back(name->getValue());
5470 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5471 identifier->delimiters.push_back("::");
5472 identifier->location = (*yylocp);
5473 (*yyvalp) = identifier;}
5474 #line 5475 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5475 break;
5476
5477 case 270: /* Mixed_Identifier_List: idlist_dot ScopeRes Identifier */
5478 #line 1950 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5479 {
5480 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5481 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5482 identifier->components.push_back(name->getValue());
5483 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5484 identifier->delimiters.push_back("::");
5485 identifier->location = (*yylocp);
5486 (*yyvalp) = identifier;}
5487 #line 5488 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5488 break;
5489
5490 case 271: /* idlist_scopres: idlist_scopres ScopeRes Identifier */
5491 #line 1961 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5492 {
5493 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5494 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5495 identifier->components.push_back(name->getValue());
5496 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5497 identifier->delimiters.push_back("::");
5498 identifier->location = (*yylocp);
5499 (*yyvalp) = identifier;}
5500 #line 5501 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5501 break;
5502
5503 case 272: /* idlist_scopres: Ambigious_Iden_List ScopeRes Identifier */
5504 #line 1969 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5505 {
5506 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5507 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5508 identifier->components.push_back(name->getValue());
5509 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5510 identifier->delimiters.push_back("::");
5511 identifier->location = (*yylocp);
5512 (*yyvalp) = identifier;}
5513 #line 5514 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5514 break;
5515
5516 case 273: /* idlist_scopres: ScopeRes Ambigious_Iden_List */
5517 #line 1977 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5518 {
5519 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5520 identifier->noUsing = true;
5521 (*yyvalp) = identifier;}
5522 #line 5523 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5523 break;
5524
5525 case 274: /* idlist_dot: idlist_dot DOT Identifier */
5526 #line 1984 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5527 {
5528 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5529 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5530 identifier->components.push_back(name->getValue());
5531 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5532 identifier->delimiters.push_back(".");
5533 identifier->location = (*yylocp);
5534 (*yyvalp) = identifier;}
5535 #line 5536 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5536 break;
5537
5538 case 275: /* idlist_dot: Ambigious_Iden_List DOT Identifier */
5539 #line 1992 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5540 {
5541 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5542 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5543 identifier->components.push_back(name->getValue());
5544 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5545 identifier->delimiters.push_back(".");
5546 identifier->location = (*yylocp);
5547 (*yyvalp) = identifier;}
5548 #line 5549 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5549 break;
5550
5551 case 276: /* Ambigious_Iden_List: Identifier */
5552 #line 2003 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5553 {
5554 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5555 ASTExprIdentifier* identifier = new ASTExprIdentifier(std::shared_ptr<ASTString>(name), (*yylocp));
5556 identifier->doc_comment = std::move(name->doc_comment);
5557 if (!first_identifier_for_line) first_identifier_for_line = identifier;
5558 (*yyvalp) = identifier;}
5559 #line 5560 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5560 break;
5561
5562 case 277: /* Identifier: IDENTIFIER */
5563 #line 2012 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5564 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5565 #line 5566 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5566 break;
5567
5568 case 278: /* Func_Left: Expr_Arrow */
5569 #line 2016 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5570 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5571 #line 5572 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5572 break;
5573
5574 case 279: /* Func_Left: Identifier_List */
5575 #line 2017 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5576 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5577 #line 5578 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5578 break;
5579
5580 case 280: /* Function_Call: NEW Identifier_List LPAREN RPAREN */
5581 #line 2021 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5582 {
5583 ASTExprCall* call = new ASTExprCall((*yylocp));
5584 call->setConstructor(true);
5585 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5586 call->left = left;
5587 call->location = (*yylocp);
5588 (*yyvalp) = call;}
5589 #line 5590 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5590 break;
5591
5592 case 281: /* Function_Call: NEW Identifier_List LPAREN Function_Call_Parameters RPAREN */
5593 #line 2028 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5594 {
5595 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5596 call->setConstructor(true);
5597 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5598 call->left = left;
5599 call->location = (*yylocp);
5600 (*yyvalp) = call;}
5601 #line 5602 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5602 break;
5603
5604 case 282: /* Function_Call: Func_Left LPAREN RPAREN */
5605 #line 2035 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5606 {
5607 ASTExprCall* call = new ASTExprCall((*yylocp));
5608 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5609 call->left = left;
5610 call->location = (*yylocp);
5611 (*yyvalp) = call;}
5612 #line 5613 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5613 break;
5614
5615 case 283: /* Function_Call: Func_Left LPAREN Function_Call_Parameters RPAREN */
5616 #line 2041 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5617 {
5618 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5619 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5620 call->left = left;
5621 call->location = (*yylocp);
5622 (*yyvalp) = call;}
5623 #line 5624 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5624 break;
5625
5626 case 284: /* Function_Call_Parameters: Function_Call_Parameters COMMA Expression */
5627 #line 2050 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5628 {
5629 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5630 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5631 call->parameters.push_back(e);
5632 call->location = (*yylocp);
5633 (*yyvalp) = call;}
5634 #line 5635 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5635 break;
5636
5637 case 285: /* Function_Call_Parameters: Expression */
5638 #line 2056 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5639 {
5640 ASTExprCall* call = new ASTExprCall((*yylocp));
5641 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5642 call->parameters.push_back(e);
5643 (*yyvalp) = call;}
5644 #line 5645 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5645 break;
5646
5647 case 286: /* Expr_1: Identifier_List */
5648 #line 2068 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5649 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5650 #line 5651 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5651 break;
5652
5653 case 287: /* Expr_1: Literal */
5654 #line 2069 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5655 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5656 #line 5657 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5657 break;
5658
5659 case 288: /* Expr_1: LPAREN Expression RPAREN */
5660 #line 2070 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5661 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5662 #line 5663 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5663 break;
5664
5665 case 289: /* Expr_2: Expr_1 */
5666 #line 2072 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5667 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5668 #line 5669 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5669 break;
5670
5671 case 290: /* Expr_2: LT DataType GT Expr_2 */
5672 #line 2082 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5673 {
5674 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5675 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5676 ASTExprCast* cast = new ASTExprCast(type, expr, (*yylocp));
5677 (*yyvalp) = cast;}
5678 #line 5679 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5679 break;
5680
5681 case 291: /* Expr_Arrow: Expr_3 ARROW IDENTIFIER */
5682 #line 2090 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5683 {
5684 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5685 ASTString* right = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5686 (*yyvalp) = new ASTExprArrow(left, right, (*yylocp));}
5687 #line 5688 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5688 break;
5689
5690 case 292: /* Expr_3: Expr_2 */
5691 #line 2096 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5692 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5693 #line 5694 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5694 break;
5695
5696 case 293: /* Expr_3: Expr_3 INCREMENT */
5697 #line 2098 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5698 {(*yyvalp) = new ASTExprIncrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5699 #line 5700 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5700 break;
5701
5702 case 294: /* Expr_3: Expr_3 DECREMENT */
5703 #line 2100 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5704 {(*yyvalp) = new ASTExprDecrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5705 #line 5706 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5706 break;
5707
5708 case 295: /* Expr_3: Function_Call */
5709 #line 2102 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5710 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5711 #line 5712 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5712 break;
5713
5714 case 296: /* Expr_3: Expr_3 LBRACKET Expression RBRACKET */
5715 #line 2104 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5716 {
5717 (*yyvalp) = new ASTExprIndex((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));;}
5718 #line 5719 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5719 break;
5720
5721 case 297: /* Expr_3: Expr_Arrow */
5722 #line 2107 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5723 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5724 #line 5725 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5725 break;
5726
5727 case 298: /* Expr_4: Expr_3 */
5728 #line 2110 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5729 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5730 #line 5731 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5731 break;
5732
5733 case 299: /* Expr_4: INCREMENT Expr_4 */
5734 #line 2112 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5735 {(*yyvalp) = new ASTExprIncrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5736 #line 5737 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5737 break;
5738
5739 case 300: /* Expr_4: DECREMENT Expr_4 */
5740 #line 2114 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5741 {(*yyvalp) = new ASTExprDecrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5742 #line 5743 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5743 break;
5744
5745 case 301: /* Expr_4: MINUS Expr_4 */
5746 #line 2116 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5747 {(*yyvalp) = new ASTExprNegate((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5748 #line 5749 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5749 break;
5750
5751 case 302: /* Expr_4: NOT Expr_4 */
5752 #line 2118 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5753 {(*yyvalp) = new ASTExprNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5754 #line 5755 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5755 break;
5756
5757 case 303: /* Expr_4: BITNOT Expr_4 */
5758 #line 2120 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5759 {(*yyvalp) = new ASTExprBitNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5760 #line 5761 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5761 break;
5762
5763 case 304: /* Expr_5: Expr_4 */
5764 #line 2123 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5765 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5766 #line 5767 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5767 break;
5768
5769 case 305: /* Expr_5: Expr_5 EXPN Expr_4 */
5770 #line 2125 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5771 {(*yyvalp) = new ASTExprExpn((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5772 #line 5773 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5773 break;
5774
5775 case 306: /* Expr_6: Expr_5 */
5776 #line 2128 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5777 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5778 #line 5779 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5779 break;
5780
5781 case 307: /* Expr_6: Expr_6 TIMES Expr_5 */
5782 #line 2130 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5783 {(*yyvalp) = new ASTExprTimes((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5784 #line 5785 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5785 break;
5786
5787 case 308: /* Expr_6: Expr_6 DIVIDE Expr_5 */
5788 #line 2132 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5789 {(*yyvalp) = new ASTExprDivide((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5790 #line 5791 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5791 break;
5792
5793 case 309: /* Expr_6: Expr_6 MODULO Expr_5 */
5794 #line 2134 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5795 {(*yyvalp) = new ASTExprModulo((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5796 #line 5797 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5797 break;
5798
5799 case 310: /* Expr_7: Expr_6 */
5800 #line 2137 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5801 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5802 #line 5803 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5803 break;
5804
5805 case 311: /* Expr_7: Expr_7 PLUS Expr_6 */
5806 #line 2139 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5807 {(*yyvalp) = new ASTExprPlus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5808 #line 5809 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5809 break;
5810
5811 case 312: /* Expr_7: Expr_7 MINUS Expr_6 */
5812 #line 2141 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5813 {(*yyvalp) = new ASTExprMinus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5814 #line 5815 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5815 break;
5816
5817 case 313: /* Expr_8: Expr_7 */
5818 #line 2144 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5819 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5820 #line 5821 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5821 break;
5822
5823 case 314: /* Expr_8: Expr_8 LSHIFT Expr_7 */
5824 #line 2146 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5825 {(*yyvalp) = new ASTExprLShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5826 #line 5827 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5827 break;
5828
5829 case 315: /* Expr_8: Expr_8 RSHIFT Expr_7 */
5830 #line 2148 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5831 {(*yyvalp) = new ASTExprRShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5832 #line 5833 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5833 break;
5834
5835 case 316: /* Expr_9: Expr_8 */
5836 #line 2151 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5837 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5838 #line 5839 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5839 break;
5840
5841 case 317: /* Expr_9: Expr_9 LT Expr_8 */
5842 #line 2153 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5843 {(*yyvalp) = new ASTExprLT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5844 #line 5845 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5845 break;
5846
5847 case 318: /* Expr_9: Expr_9 LE Expr_8 */
5848 #line 2155 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5849 {(*yyvalp) = new ASTExprLE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5850 #line 5851 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5851 break;
5852
5853 case 319: /* Expr_9: Expr_9 GT Expr_8 */
5854 #line 2157 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5855 {(*yyvalp) = new ASTExprGT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5856 #line 5857 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5857 break;
5858
5859 case 320: /* Expr_9: Expr_9 GE Expr_8 */
5860 #line 2159 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5861 {(*yyvalp) = new ASTExprGE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5862 #line 5863 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5863 break;
5864
5865 case 321: /* Expr_10: Expr_9 */
5866 #line 2162 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5867 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5868 #line 5869 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5869 break;
5870
5871 case 322: /* Expr_10: Expr_10 EQ Expr_9 */
5872 #line 2164 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5873 {(*yyvalp) = new ASTExprEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5874 #line 5875 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5875 break;
5876
5877 case 323: /* Expr_10: Expr_10 NE Expr_9 */
5878 #line 2166 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5879 {(*yyvalp) = new ASTExprNE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5880 #line 5881 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5881 break;
5882
5883 case 324: /* Expr_10: Expr_10 APPXEQUAL Expr_9 */
5884 #line 2168 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5885 {(*yyvalp) = new ASTExprAppxEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5886 #line 5887 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5887 break;
5888
5889 case 325: /* Expr_10: Expr_10 XOR Expr_9 */
5890 #line 2170 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5891 {(*yyvalp) = new ASTExprXOR((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5892 #line 5893 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5893 break;
5894
5895 case 326: /* Expr_11: Expr_10 */
5896 #line 2173 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5897 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5898 #line 5899 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5899 break;
5900
5901 case 327: /* Expr_11: Expr_11 BITAND Expr_10 */
5902 #line 2175 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5903 {(*yyvalp) = new ASTExprBitAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5904 #line 5905 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5905 break;
5906
5907 case 328: /* Expr_12: Expr_11 */
5908 #line 2178 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5909 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5910 #line 5911 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5911 break;
5912
5913 case 329: /* Expr_12: Expr_12 BITXOR Expr_11 */
5914 #line 2180 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5915 {(*yyvalp) = new ASTExprBitXor((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5916 #line 5917 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5917 break;
5918
5919 case 330: /* Expr_13: Expr_12 */
5920 #line 2183 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5921 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5922 #line 5923 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5923 break;
5924
5925 case 331: /* Expr_13: Expr_13 BITOR Expr_12 */
5926 #line 2185 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5927 {(*yyvalp) = new ASTExprBitOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5928 #line 5929 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5929 break;
5930
5931 case 332: /* Expr_14: Expr_13 */
5932 #line 2188 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5933 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5934 #line 5935 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5935 break;
5936
5937 case 333: /* Expr_14: Expr_14 AND Expr_13 */
5938 #line 2190 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5939 {(*yyvalp) = new ASTExprAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5940 #line 5941 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5941 break;
5942
5943 case 334: /* Expr_15: Expr_14 */
5944 #line 2193 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5945 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5946 #line 5947 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5947 break;
5948
5949 case 335: /* Expr_15: Expr_15 OR Expr_14 */
5950 #line 2195 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5951 {(*yyvalp) = new ASTExprOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5952 #line 5953 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5953 break;
5954
5955 case 336: /* Expr_16: Expr_15 */
5956 #line 2198 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5957 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5958 #line 5959 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5959 break;
5960
5961 case 337: /* Expr_16: Expr_15 QMARK Expr_16 COLON Expr_16 */
5962 #line 2201 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5963 {
5964 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5965 ASTExpr* middle = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5966 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5967 (*yyvalp) = new ASTTernaryExpr(left, middle, right, (*yylocp));
5968 }
5969 #line 5970 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5970 break;
5971
5972 case 338: /* Expr_17: Expr_16 */
5973 #line 2209 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5974 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5975 #line 5976 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5976 break;
5977
5978 case 339: /* Expr_17: DELETE Expr_17 */
5979 #line 2210 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5980 {
5981 ASTExprDelete* del = new ASTExprDelete((*yylocp));
5982 ASTExpr* operand = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5983 del->operand = operand;
5984 (*yyvalp) = del;}
5985 #line 5986 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5986 break;
5987
5988 case 340: /* Expr_18: Expr_17 */
5989 #line 2217 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5990 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5991 #line 5992 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5992 break;
5993
5994 case 341: /* Expr_18: Expr_17 ASSIGN Expr_18 */
5995 #line 2219 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5996 {(*yyvalp) = new ASTExprAssign((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5997 #line 5998 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5998 break;
5999
6000 case 342: /* Expr_18: Expr_17 PLUSASSIGN Expr_18 */
6001 #line 2221 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6002 {
6003 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6004 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6005 (*yyvalp) = new ASTExprAssign(left, new ASTExprPlus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6006 #line 6007 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6007 break;
6008
6009 case 343: /* Expr_18: Expr_17 MINUSASSIGN Expr_18 */
6010 #line 2226 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6011 {
6012 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6013 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6014 (*yyvalp) = new ASTExprAssign(left, new ASTExprMinus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6015 #line 6016 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6016 break;
6017
6018 case 344: /* Expr_18: Expr_17 TIMESASSIGN Expr_18 */
6019 #line 2231 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6020 {
6021 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6022 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6023 (*yyvalp) = new ASTExprAssign(left, new ASTExprTimes(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6024 #line 6025 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6025 break;
6026
6027 case 345: /* Expr_18: Expr_17 DIVIDEASSIGN Expr_18 */
6028 #line 2236 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6029 {
6030 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6031 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6032 (*yyvalp) = new ASTExprAssign(left, new ASTExprDivide(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6033 #line 6034 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6034 break;
6035
6036 case 346: /* Expr_18: Expr_17 MODULOASSIGN Expr_18 */
6037 #line 2241 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6038 {
6039 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6040 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6041 (*yyvalp) = new ASTExprAssign(left, new ASTExprModulo(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6042 #line 6043 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6043 break;
6044
6045 case 347: /* Expr_18: Expr_17 LSHIFTASSIGN Expr_18 */
6046 #line 2246 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6047 {
6048 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6049 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6050 (*yyvalp) = new ASTExprAssign(left, new ASTExprLShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6051 #line 6052 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6052 break;
6053
6054 case 348: /* Expr_18: Expr_17 RSHIFTASSIGN Expr_18 */
6055 #line 2251 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6056 {
6057 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6058 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6059 (*yyvalp) = new ASTExprAssign(left, new ASTExprRShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6060 #line 6061 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6061 break;
6062
6063 case 349: /* Expr_18: Expr_17 BITANDASSIGN Expr_18 */
6064 #line 2256 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6065 {
6066 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6067 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6068 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6069 #line 6070 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6070 break;
6071
6072 case 350: /* Expr_18: Expr_17 BITNOTASSIGN Expr_18 */
6073 #line 2262 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6074 {
6075 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6076 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6077 ASTExprBitAnd* rval = new ASTExprBitAnd(left->clone(), new ASTExprBitNot(right, (*yylocp)), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc));
6078 (*yyvalp) = new ASTExprAssign(left, rval, (*yylocp));}
6079 #line 6080 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6080 break;
6081
6082 case 351: /* Expr_18: Expr_17 BITXORASSIGN Expr_18 */
6083 #line 2268 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6084 {
6085 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6086 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6087 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitXor(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6088 #line 6089 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6089 break;
6090
6091 case 352: /* Expr_18: Expr_17 BITORASSIGN Expr_18 */
6092 #line 2273 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6093 {
6094 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6095 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6096 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6097 #line 6098 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6098 break;
6099
6100 case 353: /* Expr_18: Expr_17 ANDASSIGN Expr_18 */
6101 #line 2278 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6102 {
6103 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6104 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6105 (*yyvalp) = new ASTExprAssign(left, new ASTExprAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6106 #line 6107 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6107 break;
6108
6109 case 354: /* Expr_18: Expr_17 ORASSIGN Expr_18 */
6110 #line 2283 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6111 {
6112 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6113 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6114 (*yyvalp) = new ASTExprAssign(left, new ASTExprOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6115 #line 6116 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6116 break;
6117
6118 case 355: /* Expression: Expr_18 */
6119 #line 2289 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6120 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6121 #line 6122 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6122 break;
6123
6124 case 356: /* Statement_Expression: Expression */
6125 #line 2292 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6126 {
6127 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6128 expr = handle_statement_expr(expr);
6129 (*yyvalp) = expr;}
6130 #line 6131 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6131 break;
6132
6133 case 357: /* Expression_Constant: Expression */
6134 #line 2299 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6135 {
6136 ASTExpr* content = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6137 (*yyvalp) = new ASTExprConst(content, (*yylocp));}
6138 #line 6139 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6139 break;
6140
6141 case 358: /* Expression_Const_Range: Expression_Range */
6142 #line 2305 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6143 {
6144 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6145 ASTExpr* start = range->start.release();
6146 range->start = new ASTExprConst(start, start->location);
6147 ASTExpr* end = range->end.release();
6148 range->end = new ASTExprConst(end, end->location);
6149 (*yyvalp) = range;
6150 }
6151 #line 6152 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6152 break;
6153
6154 case 359: /* Expression_Range: Expression RANGE Expression */
6155 #line 2316 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6156 {
6157 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6158 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6159 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6160 #line 6161 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6161 break;
6162
6163 case 360: /* Expression_Range: Expression RANGE_LR Expression */
6164 #line 2321 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6165 {
6166 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6167 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6168 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6169 #line 6170 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6170 break;
6171
6172 case 361: /* Expression_Range: Expression RANGE_L Expression */
6173 #line 2326 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6174 {
6175 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6176 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6177 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6178 #line 6179 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6179 break;
6180
6181 case 362: /* Expression_Range: Expression RANGE_R Expression */
6182 #line 2331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6183 {
6184 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6185 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6186 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6187 #line 6188 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6188 break;
6189
6190 case 363: /* Expression_Range: Expression RANGE_N Expression */
6191 #line 2336 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6192 {
6193 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6194 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6195 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6196 #line 6197 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6197 break;
6198
6199 case 364: /* Expression_Range: LBRACKET Expression COMMA Expression RBRACKET */
6200 #line 2341 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6201 {
6202 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6203 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6204 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6205 #line 6206 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6206 break;
6207
6208 case 365: /* Expression_Range: LBRACKET Expression COMMA Expression RPAREN */
6209 #line 2346 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6210 {
6211 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6212 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6213 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6214 #line 6215 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6215 break;
6216
6217 case 366: /* Expression_Range: LPAREN Expression COMMA Expression RBRACKET */
6218 #line 2351 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6219 {
6220 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6221 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6222 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6223 #line 6224 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6224 break;
6225
6226 case 367: /* Expression_Range: LPAREN Expression COMMA Expression RPAREN */
6227 #line 2356 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6228 {
6229 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6230 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6231 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6232 #line 6233 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6233 break;
6234
6235 case 368: /* Literal: NUMBER */
6236 #line 2366 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6237 {
6238 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6239 (*yyvalp) = new ASTNumberLiteral(val, (*yylocp));}
6240 #line 6241 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6241 break;
6242
6243 case 369: /* Literal: LONGNUMBER */
6244 #line 2369 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6245 {
6246 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6247 (*yyvalp) = new ASTLongNumberLiteral(val, (*yylocp));}
6248 #line 6249 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6249 break;
6250
6251 case 370: /* Literal: SINGLECHAR */
6252 #line 2372 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6253 {
6254 ASTString* as = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6255 ASTFloat* number = new ASTFloat(int(as->getValue().at(1)), 0, (*yylocp));
6256 (*yyvalp) = new ASTCharLiteral(number, (*yylocp));}
6257 #line 6258 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6258 break;
6259
6260 case 371: /* Literal: Literal_String */
6261 #line 2376 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6262 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6263 #line 6264 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6264 break;
6265
6266 case 372: /* Literal: Literal_Bool */
6267 #line 2377 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6268 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6269 #line 6270 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6270 break;
6271
6272 case 373: /* Literal: Literal_Array */
6273 #line 2378 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6274 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6275 #line 6276 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6276 break;
6277
6278 case 374: /* Literal: OPTIONVALUE LPAREN IDENTIFIER RPAREN */
6279 #line 2379 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6280 {
6281 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6282 (*yyvalp) = new ASTOptionValue(name->getValue(), (*yylocp));
6283 delete name;}
6284 #line 6285 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6285 break;
6286
6287 case 375: /* Literal: ISINCLUDED LPAREN IMPORTSTRING RPAREN */
6288 #line 2383 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6289 {
6290 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6291 (*yyvalp) = new ASTIsIncluded(name->getValue(), (*yylocp));
6292 delete name;}
6293 #line 6294 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6294 break;
6295
6296 case 376: /* QuotedString: QuotedString QUOTEDSTRING */
6297 #line 2390 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6298 {
6299 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6300 ASTString* rawstr = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6301 str->append(rawstr->getValue());
6302 delete rawstr;
6303 (*yyvalp) = str;}
6304 #line 6305 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6305 break;
6306
6307 case 377: /* QuotedString: QUOTEDSTRING */
6308 #line 2396 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6309 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6310 #line 6311 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6311 break;
6312
6313 case 378: /* Literal_String: QuotedString */
6314 #line 2400 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6315 {
6316 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6317 ASTStringLiteral* str = new ASTStringLiteral(*rawstring);
6318 delete rawstring;
6319 (*yyvalp) = str;}
6320 #line 6321 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6321 break;
6322
6323 case 379: /* Literal_Bool: ZTRUE */
6324 #line 2409 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6325 {(*yyvalp) = new ASTBoolLiteral(true, (*yylocp));}
6326 #line 6327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6327 break;
6328
6329 case 380: /* Literal_Bool: ZFALSE */
6330 #line 2410 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6331 {(*yyvalp) = new ASTBoolLiteral(false, (*yylocp));}
6332 #line 6333 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6333 break;
6334
6335 case 381: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE Literal_Array_Body RBRACE */
6336 #line 2417 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6337 {
6338 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
6339 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
6340 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6341 al->type = type;
6342 al->size = size;
6343 al->location = (*yylocp);
6344 (*yyvalp) = al;
6345 }
6346 #line 6347 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6347 break;
6348
6349 case 382: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE RBRACE */
6350 #line 2429 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6351 {
6352 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
6353 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
6354 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6355 al->type = type;
6356 al->size = size;
6357 (*yyvalp) = al;
6358 }
6359 #line 6360 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6360 break;
6361
6362 case 383: /* Literal_Array: LBRACE Literal_Array_Body RBRACE */
6363 #line 2438 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6364 {
6365 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6366 al->location = (*yylocp);
6367 (*yyvalp) = al;}
6368 #line 6369 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6369 break;
6370
6371 case 384: /* Literal_Array_Body: Literal_Array_Body COMMA Expression */
6372 #line 2445 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6373 {
6374 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6375 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6376 al->elements.push_back(element);
6377 (*yyvalp) = al;}
6378 #line 6379 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6379 break;
6380
6381 case 385: /* Literal_Array_Body: Expression */
6382 #line 2450 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6383 {
6384 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6385 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6386 al->elements.push_back(element);
6387 (*yyvalp) = al;}
6388 #line 6389 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6389 break;
6390
6391
6392 #line 6393 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6393
6394 default: break;
6395 }
6396 YY_SYMBOL_PRINT ("-> $$ =", yylhsNonterm (yyrule), yyvalp, yylocp);
6397
6398 530945114 return yyok;
6399 # undef yyerrok
6400 # undef YYABORT
6401 # undef YYACCEPT
6402 # undef YYNOMEM
6403 # undef YYERROR
6404 # undef YYBACKUP
6405 # undef yyclearin
6406 # undef YYRECOVERING
6407 }
6408
6409
6410 static void
6411 yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
6412 {
6413 YY_USE (yy0);
6414 YY_USE (yy1);
6415
6416 switch (yyn)
6417 {
6418
6419 default: break;
6420 }
6421 }
6422
6423 /* Bison grammar-table manipulation. */
6424
6425 /*-----------------------------------------------.
6426 | Release the memory associated to this symbol. |
6427 `-----------------------------------------------*/
6428
6429 static void
6430 111020 yydestruct (const char *yymsg,
6431 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, std::unique_ptr<ZScript::ASTFile>& root)
6432 {
6433 YY_USE (yyvaluep);
6434 YY_USE (yylocationp);
6435 111020 YY_USE (root);
6436
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 111020 times.
111020 if (!yymsg)
6437 yymsg = "Deleting";
6438 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
6439
6440 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6441 YY_USE (yykind);
6442 YY_IGNORE_MAYBE_UNINITIALIZED_END
6443 111020 }
6444
6445 /** Number of symbols composing the right hand side of rule #RULE. */
6446 static inline int
6447 530967520 yyrhsLength (yyRuleNum yyrule)
6448 {
6449 530967520 return yyr2[yyrule];
6450 }
6451
6452 static void
6453 110964 yydestroyGLRState (char const *yymsg, yyGLRState *yys, std::unique_ptr<ZScript::ASTFile>& root)
6454 {
6455
1/2
✓ Branch 0 taken 110964 times.
✗ Branch 1 not taken.
110964 if (yys->yyresolved)
6456 221928 yydestruct (yymsg, yy_accessing_symbol (yys->yylrState),
6457 110964 &yys->yysemantics.yyval, &yys->yyloc, root);
6458 else
6459 {
6460 #if YYDEBUG
6461 if (yydebug)
6462 {
6463 if (yys->yysemantics.yyfirstVal)
6464 YY_FPRINTF ((stderr, "%s unresolved", yymsg));
6465 else
6466 YY_FPRINTF ((stderr, "%s incomplete", yymsg));
6467 YY_SYMBOL_PRINT ("", yy_accessing_symbol (yys->yylrState), YY_NULLPTR, &yys->yyloc);
6468 }
6469 #endif
6470
6471 if (yys->yysemantics.yyfirstVal)
6472 {
6473 yySemanticOption *yyoption = yys->yysemantics.yyfirstVal;
6474 yyGLRState *yyrh;
6475 int yyn;
6476 for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
6477 yyn > 0;
6478 yyrh = yyrh->yypred, yyn -= 1)
6479 yydestroyGLRState (yymsg, yyrh, root);
6480 }
6481 }
6482 110964 }
6483
6484 #define yypact_value_is_default(Yyn) \
6485 ((Yyn) == YYPACT_NINF)
6486
6487 /** True iff LR state YYSTATE has only a default reduction (regardless
6488 * of token). */
6489 static inline yybool
6490 1011624530 yyisDefaultedState (yy_state_t yystate)
6491 {
6492 1011624530 return yypact_value_is_default (yypact[yystate]);
6493 }
6494
6495 /** The default reduction for YYSTATE, assuming it has one. */
6496 static inline yyRuleNum
6497 245390597 yydefaultAction (yy_state_t yystate)
6498 {
6499 245390597 return yydefact[yystate];
6500 }
6501
6502 #define yytable_value_is_error(Yyn) \
6503 0
6504
6505 /** The action to take in YYSTATE on seeing YYTOKEN.
6506 * Result R means
6507 * R < 0: Reduce on rule -R.
6508 * R = 0: Error.
6509 * R > 0: Shift to state R.
6510 * Set *YYCONFLICTS to a pointer into yyconfl to a 0-terminated list
6511 * of conflicting reductions.
6512 */
6513 static inline int
6514 383118873 yygetLRActions (yy_state_t yystate, yysymbol_kind_t yytoken, const short** yyconflicts)
6515 {
6516 383118873 int yyindex = yypact[yystate] + yytoken;
6517
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 383118873 times.
383118873 if (yytoken == YYSYMBOL_YYerror)
6518 {
6519 // This is the error token.
6520 *yyconflicts = yyconfl;
6521 return 0;
6522 }
6523
2/2
✓ Branch 0 taken 281963434 times.
✓ Branch 1 taken 101155439 times.
766237746 else if (yyisDefaultedState (yystate)
6524
3/6
✓ Branch 0 taken 383118873 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 383118873 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 383118873 times.
✗ Branch 5 not taken.
383118873 || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
6525 {
6526 281963434 *yyconflicts = yyconfl;
6527 281963434 return -yydefact[yystate];
6528 }
6529 else if (! yytable_value_is_error (yytable[yyindex]))
6530 {
6531 101155439 *yyconflicts = yyconfl + yyconflp[yyindex];
6532 101155439 return yytable[yyindex];
6533 }
6534 else
6535 {
6536 *yyconflicts = yyconfl + yyconflp[yyindex];
6537 return 0;
6538 }
6539 383118873 }
6540
6541 /** Compute post-reduction state.
6542 * \param yystate the current state
6543 * \param yysym the nonterminal to push on the stack
6544 */
6545 static inline yy_state_t
6546 530967520 yyLRgotoState (yy_state_t yystate, yysymbol_kind_t yysym)
6547 {
6548 530967520 int yyr = yypgoto[yysym - YYNTOKENS] + yystate;
6549
5/6
✓ Branch 0 taken 410839096 times.
✓ Branch 1 taken 120128424 times.
✓ Branch 2 taken 410839096 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 77751521 times.
✓ Branch 5 taken 333087575 times.
530967520 if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate)
6550 77751521 return yytable[yyr];
6551 else
6552 453215999 return yydefgoto[yysym - YYNTOKENS];
6553 530967520 }
6554
6555 static inline yybool
6556 383111247 yyisShiftAction (int yyaction)
6557 {
6558 383111247 return 0 < yyaction;
6559 }
6560
6561 static inline yybool
6562 285576979 yyisErrorAction (int yyaction)
6563 {
6564 285576979 return yyaction == 0;
6565 }
6566
6567 /* GLRStates */
6568
6569 /** Return a fresh GLRStackItem in YYSTACKP. The item is an LR state
6570 * if YYISSTATE, and otherwise a semantic option. Callers should call
6571 * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient
6572 * headroom. */
6573
6574 static inline yyGLRStackItem*
6575 628579509 yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState)
6576 {
6577 628579509 yyGLRStackItem* yynewItem = yystackp->yynextFree;
6578 628579509 yystackp->yyspaceLeft -= 1;
6579 628579509 yystackp->yynextFree += 1;
6580 628579509 yynewItem->yystate.yyisState = yyisState;
6581 628579509 return yynewItem;
6582 }
6583
6584 /** Add a new semantic action that will execute the action for rule
6585 * YYRULE on the semantic values in YYRHS to the list of
6586 * alternative actions for YYSTATE. Assumes that YYRHS comes from
6587 * stack #YYK of *YYSTACKP. */
6588 static void
6589 22406 yyaddDeferredAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyGLRState* yystate,
6590 yyGLRState* yyrhs, yyRuleNum yyrule)
6591 {
6592 22406 yySemanticOption* yynewOption =
6593 22406 &yynewGLRStackItem (yystackp, yyfalse)->yyoption;
6594 YY_ASSERT (!yynewOption->yyisState);
6595 22406 yynewOption->yystate = yyrhs;
6596 22406 yynewOption->yyrule = yyrule;
6597
1/2
✓ Branch 0 taken 22406 times.
✗ Branch 1 not taken.
22406 if (yystackp->yytops.yylookaheadNeeds[yyk])
6598 {
6599 22406 yynewOption->yyrawchar = yychar;
6600 22406 yynewOption->yyval = yylval;
6601 22406 yynewOption->yyloc = yylloc;
6602 22406 }
6603 else
6604 yynewOption->yyrawchar = TOK_YYEMPTY;
6605 22406 yynewOption->yynext = yystate->yysemantics.yyfirstVal;
6606 22406 yystate->yysemantics.yyfirstVal = yynewOption;
6607
6608
1/2
✓ Branch 0 taken 22406 times.
✗ Branch 1 not taken.
22406 YY_RESERVE_GLRSTACK (yystackp);
6609 22406 }
6610
6611 /* GLRStacks */
6612
6613 /** Initialize YYSET to a singleton set containing an empty stack. */
6614 static yybool
6615 55315 yyinitStateSet (yyGLRStateSet* yyset)
6616 {
6617 55315 yyset->yysize = 1;
6618 55315 yyset->yycapacity = 16;
6619 55315 yyset->yystates
6620 110630 = YY_CAST (yyGLRState**,
6621 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6622 * sizeof yyset->yystates[0]));
6623
1/2
✓ Branch 0 taken 55315 times.
✗ Branch 1 not taken.
55315 if (! yyset->yystates)
6624 return yyfalse;
6625 55315 yyset->yystates[0] = YY_NULLPTR;
6626 55315 yyset->yylookaheadNeeds
6627 110630 = YY_CAST (yybool*,
6628 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6629 * sizeof yyset->yylookaheadNeeds[0]));
6630
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 55315 times.
55315 if (! yyset->yylookaheadNeeds)
6631 {
6632 YYFREE (yyset->yystates);
6633 return yyfalse;
6634 }
6635 110630 memset (yyset->yylookaheadNeeds,
6636 0,
6637 55315 YY_CAST (YYSIZE_T, yyset->yycapacity) * sizeof yyset->yylookaheadNeeds[0]);
6638 55315 return yytrue;
6639 55315 }
6640
6641 55315 static void yyfreeStateSet (yyGLRStateSet* yyset)
6642 {
6643 55315 YYFREE (yyset->yystates);
6644 55315 YYFREE (yyset->yylookaheadNeeds);
6645 55315 }
6646
6647 /** Initialize *YYSTACKP to a single empty stack, with total maximum
6648 * capacity for all stacks of YYSIZE. */
6649 static yybool
6650 55315 yyinitGLRStack (yyGLRStack* yystackp, YYPTRDIFF_T yysize)
6651 {
6652 55315 yystackp->yyerrState = 0;
6653 55315 yynerrs = 0;
6654 55315 yystackp->yyspaceLeft = yysize;
6655 55315 yystackp->yyitems
6656 110630 = YY_CAST (yyGLRStackItem*,
6657 YYMALLOC (YY_CAST (YYSIZE_T, yysize)
6658 * sizeof yystackp->yynextFree[0]));
6659
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 55315 times.
55315 if (!yystackp->yyitems)
6660 return yyfalse;
6661 55315 yystackp->yynextFree = yystackp->yyitems;
6662 55315 yystackp->yysplitPoint = YY_NULLPTR;
6663 55315 yystackp->yylastDeleted = YY_NULLPTR;
6664 55315 return yyinitStateSet (&yystackp->yytops);
6665 55315 }
6666
6667
6668 #if YYSTACKEXPANDABLE
6669 # define YYRELOC(YYFROMITEMS, YYTOITEMS, YYX, YYTYPE) \
6670 &((YYTOITEMS) \
6671 - ((YYFROMITEMS) - YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX))))->YYTYPE
6672
6673 /** If *YYSTACKP is expandable, extend it. WARNING: Pointers into the
6674 stack from outside should be considered invalid after this call.
6675 We always expand when there are 1 or fewer items left AFTER an
6676 allocation, so that we can avoid having external pointers exist
6677 across an allocation. */
6678 static void
6679 yyexpandGLRStack (yyGLRStack* yystackp)
6680 {
6681 yyGLRStackItem* yynewItems;
6682 yyGLRStackItem* yyp0, *yyp1;
6683 YYPTRDIFF_T yynewSize;
6684 YYPTRDIFF_T yyn;
6685 YYPTRDIFF_T yysize = yystackp->yynextFree - yystackp->yyitems;
6686 if (YYMAXDEPTH - YYHEADROOM < yysize)
6687 yyMemoryExhausted (yystackp);
6688 yynewSize = 2*yysize;
6689 if (YYMAXDEPTH < yynewSize)
6690 yynewSize = YYMAXDEPTH;
6691 yynewItems
6692 = YY_CAST (yyGLRStackItem*,
6693 YYMALLOC (YY_CAST (YYSIZE_T, yynewSize)
6694 * sizeof yynewItems[0]));
6695 if (! yynewItems)
6696 yyMemoryExhausted (yystackp);
6697 for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize;
6698 0 < yyn;
6699 yyn -= 1, yyp0 += 1, yyp1 += 1)
6700 {
6701 *yyp1 = *yyp0;
6702 if (*YY_REINTERPRET_CAST (yybool *, yyp0))
6703 {
6704 yyGLRState* yys0 = &yyp0->yystate;
6705 yyGLRState* yys1 = &yyp1->yystate;
6706 if (yys0->yypred != YY_NULLPTR)
6707 yys1->yypred =
6708 YYRELOC (yyp0, yyp1, yys0->yypred, yystate);
6709 if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULLPTR)
6710 yys1->yysemantics.yyfirstVal =
6711 YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption);
6712 }
6713 else
6714 {
6715 yySemanticOption* yyv0 = &yyp0->yyoption;
6716 yySemanticOption* yyv1 = &yyp1->yyoption;
6717 if (yyv0->yystate != YY_NULLPTR)
6718 yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate);
6719 if (yyv0->yynext != YY_NULLPTR)
6720 yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption);
6721 }
6722 }
6723 if (yystackp->yysplitPoint != YY_NULLPTR)
6724 yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
6725 yystackp->yysplitPoint, yystate);
6726
6727 for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
6728 if (yystackp->yytops.yystates[yyn] != YY_NULLPTR)
6729 yystackp->yytops.yystates[yyn] =
6730 YYRELOC (yystackp->yyitems, yynewItems,
6731 yystackp->yytops.yystates[yyn], yystate);
6732 YYFREE (yystackp->yyitems);
6733 yystackp->yyitems = yynewItems;
6734 yystackp->yynextFree = yynewItems + yysize;
6735 yystackp->yyspaceLeft = yynewSize - yysize;
6736 }
6737 #endif
6738
6739 static void
6740 55315 yyfreeGLRStack (yyGLRStack* yystackp)
6741 {
6742 55315 YYFREE (yystackp->yyitems);
6743 55315 yyfreeStateSet (&yystackp->yytops);
6744 55315 }
6745
6746 /** Assuming that YYS is a GLRState somewhere on *YYSTACKP, update the
6747 * splitpoint of *YYSTACKP, if needed, so that it is at least as deep as
6748 * YYS. */
6749 static inline void
6750 22406 yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys)
6751 {
6752
3/4
✓ Branch 0 taken 22406 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18586 times.
✓ Branch 3 taken 3820 times.
22406 if (yystackp->yysplitPoint != YY_NULLPTR && yystackp->yysplitPoint > yys)
6753 3820 yystackp->yysplitPoint = yys;
6754 22406 }
6755
6756 /** Invalidate stack #YYK in *YYSTACKP. */
6757 static inline void
6758 3813 yymarkStackDeleted (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
6759 {
6760
1/2
✓ Branch 0 taken 3813 times.
✗ Branch 1 not taken.
3813 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
6761 3813 yystackp->yylastDeleted = yystackp->yytops.yystates[yyk];
6762 3813 yystackp->yytops.yystates[yyk] = YY_NULLPTR;
6763 3813 }
6764
6765 /** Undelete the last stack in *YYSTACKP that was marked as deleted. Can
6766 only be done once after a deletion, and only when all other stacks have
6767 been deleted. */
6768 static void
6769 yyundeleteLastStack (yyGLRStack* yystackp)
6770 {
6771 if (yystackp->yylastDeleted == YY_NULLPTR || yystackp->yytops.yysize != 0)
6772 return;
6773 yystackp->yytops.yystates[0] = yystackp->yylastDeleted;
6774 yystackp->yytops.yysize = 1;
6775 YY_DPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n"));
6776 yystackp->yylastDeleted = YY_NULLPTR;
6777 }
6778
6779 static inline void
6780 3869 yyremoveDeletes (yyGLRStack* yystackp)
6781 {
6782 YYPTRDIFF_T yyi, yyj;
6783 3869 yyi = yyj = 0;
6784
2/2
✓ Branch 0 taken 7682 times.
✓ Branch 1 taken 3869 times.
11551 while (yyj < yystackp->yytops.yysize)
6785 {
6786
2/2
✓ Branch 0 taken 3869 times.
✓ Branch 1 taken 3813 times.
7682 if (yystackp->yytops.yystates[yyi] == YY_NULLPTR)
6787 {
6788
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3813 times.
3813 if (yyi == yyj)
6789 3813 YY_DPRINTF ((stderr, "Removing dead stacks.\n"));
6790 3813 yystackp->yytops.yysize -= 1;
6791 3813 }
6792 else
6793 {
6794 3869 yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi];
6795 /* In the current implementation, it's unnecessary to copy
6796 yystackp->yytops.yylookaheadNeeds[yyi] since, after
6797 yyremoveDeletes returns, the parser immediately either enters
6798 deterministic operation or shifts a token. However, it doesn't
6799 hurt, and the code might evolve to need it. */
6800 3869 yystackp->yytops.yylookaheadNeeds[yyj] =
6801 3869 yystackp->yytops.yylookaheadNeeds[yyi];
6802
1/2
✓ Branch 0 taken 3869 times.
✗ Branch 1 not taken.
3869 if (yyj != yyi)
6803 YY_DPRINTF ((stderr, "Rename stack %ld -> %ld.\n",
6804 YY_CAST (long, yyi), YY_CAST (long, yyj)));
6805 3869 yyj += 1;
6806 }
6807 7682 yyi += 1;
6808 }
6809 3869 }
6810
6811 /** Shift to a new state on stack #YYK of *YYSTACKP, corresponding to LR
6812 * state YYLRSTATE, at input position YYPOSN, with (resolved) semantic
6813 * value *YYVALP and source location *YYLOCP. */
6814 static inline void
6815 628534697 yyglrShift (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6816 YYPTRDIFF_T yyposn,
6817 YYSTYPE* yyvalp, YYLTYPE* yylocp)
6818 {
6819 628534697 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6820
6821 628534697 yynewState->yylrState = yylrState;
6822 628534697 yynewState->yyposn = yyposn;
6823 628534697 yynewState->yyresolved = yytrue;
6824 628534697 yynewState->yypred = yystackp->yytops.yystates[yyk];
6825 628534697 yynewState->yysemantics.yyval = *yyvalp;
6826 628534697 yynewState->yyloc = *yylocp;
6827 628534697 yystackp->yytops.yystates[yyk] = yynewState;
6828
6829
1/2
✓ Branch 0 taken 628534697 times.
✗ Branch 1 not taken.
628534697 YY_RESERVE_GLRSTACK (yystackp);
6830 628534697 }
6831
6832 /** Shift stack #YYK of *YYSTACKP, to a new state corresponding to LR
6833 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
6834 * semantic value of YYRHS under the action for YYRULE. */
6835 static inline void
6836 22406 yyglrShiftDefer (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6837 YYPTRDIFF_T yyposn, yyGLRState* yyrhs, yyRuleNum yyrule)
6838 {
6839 22406 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6840 YY_ASSERT (yynewState->yyisState);
6841
6842 22406 yynewState->yylrState = yylrState;
6843 22406 yynewState->yyposn = yyposn;
6844 22406 yynewState->yyresolved = yyfalse;
6845 22406 yynewState->yypred = yystackp->yytops.yystates[yyk];
6846 22406 yynewState->yysemantics.yyfirstVal = YY_NULLPTR;
6847 22406 yystackp->yytops.yystates[yyk] = yynewState;
6848
6849 /* Invokes YY_RESERVE_GLRSTACK. */
6850 22406 yyaddDeferredAction (yystackp, yyk, yynewState, yyrhs, yyrule);
6851 22406 }
6852
6853 #if YYDEBUG
6854
6855 /*----------------------------------------------------------------------.
6856 | Report that stack #YYK of *YYSTACKP is going to be reduced by YYRULE. |
6857 `----------------------------------------------------------------------*/
6858
6859 static inline void
6860 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
6861 yyRuleNum yyrule, std::unique_ptr<ZScript::ASTFile>& root)
6862 {
6863 int yynrhs = yyrhsLength (yyrule);
6864 int yylow = 1;
6865 int yyi;
6866 YY_FPRINTF ((stderr, "Reducing stack %ld by rule %d (line %d):\n",
6867 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
6868 if (! yynormal)
6869 yyfillin (yyvsp, 1, -yynrhs);
6870 /* The symbols being reduced. */
6871 for (yyi = 0; yyi < yynrhs; yyi++)
6872 {
6873 YY_FPRINTF ((stderr, " $%d = ", yyi + 1));
6874 yy_symbol_print (stderr,
6875 yy_accessing_symbol (yyvsp[yyi - yynrhs + 1].yystate.yylrState),
6876 &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yyval,
6877 &(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL ((yyi + 1) - (yynrhs))].yystate.yyloc) , root);
6878 if (!yyvsp[yyi - yynrhs + 1].yystate.yyresolved)
6879 YY_FPRINTF ((stderr, " (unresolved)"));
6880 YY_FPRINTF ((stderr, "\n"));
6881 }
6882 }
6883 #endif
6884
6885 /** Pop the symbols consumed by reduction #YYRULE from the top of stack
6886 * #YYK of *YYSTACKP, and perform the appropriate semantic action on their
6887 * semantic values. Assumes that all ambiguities in semantic values
6888 * have been previously resolved. Set *YYVALP to the resulting value,
6889 * and *YYLOCP to the computed location (if any). Return value is as
6890 * for userAction. */
6891 static inline YYRESULTTAG
6892 530945114 yydoAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
6893 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::unique_ptr<ZScript::ASTFile>& root)
6894 {
6895 530945114 int yynrhs = yyrhsLength (yyrule);
6896
6897
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 530945114 times.
530945114 if (yystackp->yysplitPoint == YY_NULLPTR)
6898 {
6899 /* Standard special case: single stack. */
6900 530945114 yyGLRStackItem* yyrhs
6901 530945114 = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yytops.yystates[yyk]);
6902 YY_ASSERT (yyk == 0);
6903 530945114 yystackp->yynextFree -= yynrhs;
6904 530945114 yystackp->yyspaceLeft += yynrhs;
6905 530945114 yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate;
6906 1061890228 return yyuserAction (yyrule, yynrhs, yyrhs, yystackp, yyk,
6907 530945114 yyvalp, yylocp, root);
6908 }
6909 else
6910 {
6911 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
6912 yyGLRState* yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred
6913 = yystackp->yytops.yystates[yyk];
6914 int yyi;
6915 if (yynrhs == 0)
6916 /* Set default location. */
6917 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yys->yyloc;
6918 for (yyi = 0; yyi < yynrhs; yyi += 1)
6919 {
6920 yys = yys->yypred;
6921 YY_ASSERT (yys);
6922 }
6923 yyupdateSplit (yystackp, yys);
6924 yystackp->yytops.yystates[yyk] = yys;
6925 return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
6926 yystackp, yyk, yyvalp, yylocp, root);
6927 }
6928 530945114 }
6929
6930 /** Pop items off stack #YYK of *YYSTACKP according to grammar rule YYRULE,
6931 * and push back on the resulting nonterminal symbol. Perform the
6932 * semantic action associated with YYRULE and store its value with the
6933 * newly pushed state, if YYFORCEEVAL or if *YYSTACKP is currently
6934 * unambiguous. Otherwise, store the deferred semantic action with
6935 * the new state. If the new state would have an identical input
6936 * position, LR state, and predecessor to an existing state on the stack,
6937 * it is identified with that existing state, eliminating stack #YYK from
6938 * *YYSTACKP. In this case, the semantic value is
6939 * added to the options for the existing state's semantic value.
6940 */
6941 static inline YYRESULTTAG
6942 530967520 yyglrReduce (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
6943 yybool yyforceEval, std::unique_ptr<ZScript::ASTFile>& root)
6944 {
6945 530967520 YYPTRDIFF_T yyposn = yystackp->yytops.yystates[yyk]->yyposn;
6946
6947
3/4
✓ Branch 0 taken 22406 times.
✓ Branch 1 taken 530945114 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 22406 times.
530967520 if (yyforceEval || yystackp->yysplitPoint == YY_NULLPTR)
6948 {
6949 YYSTYPE yyval;
6950 YYLTYPE yyloc;
6951
6952 530945114 YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yyval, &yyloc, root);
6953
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 530945114 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
530945114 if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULLPTR)
6954 YY_DPRINTF ((stderr,
6955 "Parse on stack %ld rejected by rule %d (line %d).\n",
6956 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
6957
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 530945114 times.
530945114 if (yyflag != yyok)
6958 return yyflag;
6959 1061890228 yyglrShift (yystackp, yyk,
6960 1061890228 yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState,
6961 530945114 yylhsNonterm (yyrule)),
6962 530945114 yyposn, &yyval, &yyloc);
6963 530945114 }
6964 else
6965 {
6966 YYPTRDIFF_T yyi;
6967 int yyn;
6968 22406 yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk];
6969 yy_state_t yynewLRState;
6970
6971
2/2
✓ Branch 0 taken 25257 times.
✓ Branch 1 taken 22406 times.
47663 for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule);
6972 47663 0 < yyn; yyn -= 1)
6973 {
6974 25257 yys = yys->yypred;
6975 YY_ASSERT (yys);
6976 25257 }
6977 22406 yyupdateSplit (yystackp, yys);
6978 22406 yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule));
6979 22406 YY_DPRINTF ((stderr,
6980 "Reduced stack %ld by rule %d (line %d); action deferred. "
6981 "Now in state %d.\n",
6982 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule],
6983 yynewLRState));
6984
2/2
✓ Branch 0 taken 22406 times.
✓ Branch 1 taken 44812 times.
67218 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
6985
3/4
✓ Branch 0 taken 22406 times.
✓ Branch 1 taken 22406 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 22406 times.
67218 if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULLPTR)
6986 {
6987 22406 yyGLRState *yysplit = yystackp->yysplitPoint;
6988 22406 yyGLRState *yyp = yystackp->yytops.yystates[yyi];
6989
5/6
✓ Branch 0 taken 25264 times.
✓ Branch 1 taken 19548 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 25264 times.
✓ Branch 4 taken 22406 times.
✓ Branch 5 taken 22406 times.
44812 while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn)
6990 {
6991
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 22406 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
22406 if (yyp->yylrState == yynewLRState && yyp->yypred == yys)
6992 {
6993 yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule);
6994 yymarkStackDeleted (yystackp, yyk);
6995 YY_DPRINTF ((stderr, "Merging stack %ld into stack %ld.\n",
6996 YY_CAST (long, yyk), YY_CAST (long, yyi)));
6997 return yyok;
6998 }
6999 22406 yyp = yyp->yypred;
7000 }
7001 22406 }
7002 22406 yystackp->yytops.yystates[yyk] = yys;
7003 22406 yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule);
7004 }
7005 530967520 return yyok;
7006 530967520 }
7007
7008 static YYPTRDIFF_T
7009 3813 yysplitStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
7010 {
7011
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3813 times.
3813 if (yystackp->yysplitPoint == YY_NULLPTR)
7012 {
7013 YY_ASSERT (yyk == 0);
7014 3813 yystackp->yysplitPoint = yystackp->yytops.yystates[yyk];
7015 3813 }
7016
1/2
✓ Branch 0 taken 3813 times.
✗ Branch 1 not taken.
3813 if (yystackp->yytops.yycapacity <= yystackp->yytops.yysize)
7017 {
7018 YYPTRDIFF_T state_size = YYSIZEOF (yystackp->yytops.yystates[0]);
7019 YYPTRDIFF_T half_max_capacity = YYSIZE_MAXIMUM / 2 / state_size;
7020 if (half_max_capacity < yystackp->yytops.yycapacity)
7021 yyMemoryExhausted (yystackp);
7022 yystackp->yytops.yycapacity *= 2;
7023
7024 {
7025 yyGLRState** yynewStates
7026 = YY_CAST (yyGLRState**,
7027 YYREALLOC (yystackp->yytops.yystates,
7028 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7029 * sizeof yynewStates[0])));
7030 if (yynewStates == YY_NULLPTR)
7031 yyMemoryExhausted (yystackp);
7032 yystackp->yytops.yystates = yynewStates;
7033 }
7034
7035 {
7036 yybool* yynewLookaheadNeeds
7037 = YY_CAST (yybool*,
7038 YYREALLOC (yystackp->yytops.yylookaheadNeeds,
7039 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7040 * sizeof yynewLookaheadNeeds[0])));
7041 if (yynewLookaheadNeeds == YY_NULLPTR)
7042 yyMemoryExhausted (yystackp);
7043 yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds;
7044 }
7045 }
7046 3813 yystackp->yytops.yystates[yystackp->yytops.yysize]
7047 7626 = yystackp->yytops.yystates[yyk];
7048 3813 yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize]
7049 7626 = yystackp->yytops.yylookaheadNeeds[yyk];
7050 3813 yystackp->yytops.yysize += 1;
7051 3813 return yystackp->yytops.yysize - 1;
7052 }
7053
7054 /** True iff YYY0 and YYY1 represent identical options at the top level.
7055 * That is, they represent the same rule applied to RHS symbols
7056 * that produce the same terminal symbols. */
7057 static yybool
7058 yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1)
7059 {
7060 if (yyy0->yyrule == yyy1->yyrule)
7061 {
7062 yyGLRState *yys0, *yys1;
7063 int yyn;
7064 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7065 yyn = yyrhsLength (yyy0->yyrule);
7066 yyn > 0;
7067 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7068 if (yys0->yyposn != yys1->yyposn)
7069 return yyfalse;
7070 return yytrue;
7071 }
7072 else
7073 return yyfalse;
7074 }
7075
7076 /** Assuming identicalOptions (YYY0,YYY1), destructively merge the
7077 * alternative semantic values for the RHS-symbols of YYY1 and YYY0. */
7078 static void
7079 yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1)
7080 {
7081 yyGLRState *yys0, *yys1;
7082 int yyn;
7083 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7084 yyn = yyrhsLength (yyy0->yyrule);
7085 0 < yyn;
7086 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7087 {
7088 if (yys0 == yys1)
7089 break;
7090 else if (yys0->yyresolved)
7091 {
7092 yys1->yyresolved = yytrue;
7093 yys1->yysemantics.yyval = yys0->yysemantics.yyval;
7094 }
7095 else if (yys1->yyresolved)
7096 {
7097 yys0->yyresolved = yytrue;
7098 yys0->yysemantics.yyval = yys1->yysemantics.yyval;
7099 }
7100 else
7101 {
7102 yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal;
7103 yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal;
7104 while (yytrue)
7105 {
7106 if (yyz1 == *yyz0p || yyz1 == YY_NULLPTR)
7107 break;
7108 else if (*yyz0p == YY_NULLPTR)
7109 {
7110 *yyz0p = yyz1;
7111 break;
7112 }
7113 else if (*yyz0p < yyz1)
7114 {
7115 yySemanticOption* yyz = *yyz0p;
7116 *yyz0p = yyz1;
7117 yyz1 = yyz1->yynext;
7118 (*yyz0p)->yynext = yyz;
7119 }
7120 yyz0p = &(*yyz0p)->yynext;
7121 }
7122 yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal;
7123 }
7124 }
7125 }
7126
7127 /** Y0 and Y1 represent two possible actions to take in a given
7128 * parsing state; return 0 if no combination is possible,
7129 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
7130 static int
7131 yypreference (yySemanticOption* y0, yySemanticOption* y1)
7132 {
7133 yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule;
7134 int p0 = yydprec[r0], p1 = yydprec[r1];
7135
7136 if (p0 == p1)
7137 {
7138 if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1])
7139 return 0;
7140 else
7141 return 1;
7142 }
7143 if (p0 == 0 || p1 == 0)
7144 return 0;
7145 if (p0 < p1)
7146 return 3;
7147 if (p1 < p0)
7148 return 2;
7149 return 0;
7150 }
7151
7152 static YYRESULTTAG
7153 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root);
7154
7155
7156 /** Resolve the previous YYN states starting at and including state YYS
7157 * on *YYSTACKP. If result != yyok, some states may have been left
7158 * unresolved possibly with empty semantic option chains. Regardless
7159 * of whether result = yyok, each state has been left with consistent
7160 * data so that yydestroyGLRState can be invoked if necessary. */
7161 static YYRESULTTAG
7162 14290 yyresolveStates (yyGLRState* yys, int yyn,
7163 yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7164 {
7165
2/2
✓ Branch 0 taken 3813 times.
✓ Branch 1 taken 10477 times.
14290 if (0 < yyn)
7166 {
7167 YY_ASSERT (yys->yypred);
7168
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 10477 times.
10477 YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp, root));
7169
1/2
✓ Branch 0 taken 10477 times.
✗ Branch 1 not taken.
10477 if (! yys->yyresolved)
7170 YYCHK (yyresolveValue (yys, yystackp, root));
7171 10477 }
7172 14290 return yyok;
7173 14290 }
7174
7175 /** Resolve the states for the RHS of YYOPT on *YYSTACKP, perform its
7176 * user action, and return the semantic value and location in *YYVALP
7177 * and *YYLOCP. Regardless of whether result = yyok, all RHS states
7178 * have been destroyed (assuming the user action destroys all RHS
7179 * semantic values if invoked). */
7180 static YYRESULTTAG
7181 yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
7182 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::unique_ptr<ZScript::ASTFile>& root)
7183 {
7184 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
7185 int yynrhs = yyrhsLength (yyopt->yyrule);
7186 YYRESULTTAG yyflag =
7187 yyresolveStates (yyopt->yystate, yynrhs, yystackp, root);
7188 if (yyflag != yyok)
7189 {
7190 yyGLRState *yys;
7191 for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1)
7192 yydestroyGLRState ("Cleanup: popping", yys, root);
7193 return yyflag;
7194 }
7195
7196 yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;
7197 if (yynrhs == 0)
7198 /* Set default location. */
7199 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yyopt->yystate->yyloc;
7200 {
7201 int yychar_current = yychar;
7202 YYSTYPE yylval_current = yylval;
7203 YYLTYPE yylloc_current = yylloc;
7204 yychar = yyopt->yyrawchar;
7205 yylval = yyopt->yyval;
7206 yylloc = yyopt->yyloc;
7207 yyflag = yyuserAction (yyopt->yyrule, yynrhs,
7208 yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
7209 yystackp, -1, yyvalp, yylocp, root);
7210 yychar = yychar_current;
7211 yylval = yylval_current;
7212 yylloc = yylloc_current;
7213 }
7214 return yyflag;
7215 }
7216
7217 #if YYDEBUG
7218 static void
7219 yyreportTree (yySemanticOption* yyx, int yyindent)
7220 {
7221 int yynrhs = yyrhsLength (yyx->yyrule);
7222 int yyi;
7223 yyGLRState* yys;
7224 yyGLRState* yystates[1 + YYMAXRHS];
7225 yyGLRState yyleftmost_state;
7226
7227 for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred)
7228 yystates[yyi] = yys;
7229 if (yys == YY_NULLPTR)
7230 {
7231 yyleftmost_state.yyposn = 0;
7232 yystates[0] = &yyleftmost_state;
7233 }
7234 else
7235 yystates[0] = yys;
7236
7237 if (yyx->yystate->yyposn < yys->yyposn + 1)
7238 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, empty>\n",
7239 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7240 yyx->yyrule - 1));
7241 else
7242 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, tokens %ld .. %ld>\n",
7243 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7244 yyx->yyrule - 1, YY_CAST (long, yys->yyposn + 1),
7245 YY_CAST (long, yyx->yystate->yyposn)));
7246 for (yyi = 1; yyi <= yynrhs; yyi += 1)
7247 {
7248 if (yystates[yyi]->yyresolved)
7249 {
7250 if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn)
7251 YY_FPRINTF ((stderr, "%*s%s <empty>\n", yyindent+2, "",
7252 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState))));
7253 else
7254 YY_FPRINTF ((stderr, "%*s%s <tokens %ld .. %ld>\n", yyindent+2, "",
7255 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState)),
7256 YY_CAST (long, yystates[yyi-1]->yyposn + 1),
7257 YY_CAST (long, yystates[yyi]->yyposn)));
7258 }
7259 else
7260 yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2);
7261 }
7262 }
7263 #endif
7264
7265 static YYRESULTTAG
7266 yyreportAmbiguity (yySemanticOption* yyx0,
7267 yySemanticOption* yyx1, std::unique_ptr<ZScript::ASTFile>& root)
7268 {
7269 YY_USE (yyx0);
7270 YY_USE (yyx1);
7271
7272 #if YYDEBUG
7273 YY_FPRINTF ((stderr, "Ambiguity detected.\n"));
7274 YY_FPRINTF ((stderr, "Option 1,\n"));
7275 yyreportTree (yyx0, 2);
7276 YY_FPRINTF ((stderr, "\nOption 2,\n"));
7277 yyreportTree (yyx1, 2);
7278 YY_FPRINTF ((stderr, "\n"));
7279 #endif
7280
7281 yyerror (root, YY_("syntax is ambiguous"));
7282 return yyabort;
7283 }
7284
7285 /** Resolve the locations for each of the YYN1 states in *YYSTACKP,
7286 * ending at YYS1. Has no effect on previously resolved states.
7287 * The first semantic option of a state is always chosen. */
7288 static void
7289 yyresolveLocations (yyGLRState *yys1, int yyn1,
7290 yyGLRStack *yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7291 {
7292 if (0 < yyn1)
7293 {
7294 yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp, root);
7295 if (!yys1->yyresolved)
7296 {
7297 yyGLRStackItem yyrhsloc[1 + YYMAXRHS];
7298 int yynrhs;
7299 yySemanticOption *yyoption = yys1->yysemantics.yyfirstVal;
7300 YY_ASSERT (yyoption);
7301 yynrhs = yyrhsLength (yyoption->yyrule);
7302 if (0 < yynrhs)
7303 {
7304 yyGLRState *yys;
7305 int yyn;
7306 yyresolveLocations (yyoption->yystate, yynrhs,
7307 yystackp, root);
7308 for (yys = yyoption->yystate, yyn = yynrhs;
7309 yyn > 0;
7310 yys = yys->yypred, yyn -= 1)
7311 yyrhsloc[yyn].yystate.yyloc = yys->yyloc;
7312 }
7313 else
7314 {
7315 /* Both yyresolveAction and yyresolveLocations traverse the GSS
7316 in reverse rightmost order. It is only necessary to invoke
7317 yyresolveLocations on a subforest for which yyresolveAction
7318 would have been invoked next had an ambiguity not been
7319 detected. Thus the location of the previous state (but not
7320 necessarily the previous state itself) is guaranteed to be
7321 resolved already. */
7322 yyGLRState *yyprevious = yyoption->yystate;
7323 yyrhsloc[0].yystate.yyloc = yyprevious->yyloc;
7324 }
7325 YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs);
7326 }
7327 }
7328 }
7329
7330 /** Resolve the ambiguity represented in state YYS in *YYSTACKP,
7331 * perform the indicated actions, and set the semantic value of YYS.
7332 * If result != yyok, the chain of semantic options in YYS has been
7333 * cleared instead or it has been left unmodified except that
7334 * redundant options may have been removed. Regardless of whether
7335 * result = yyok, YYS has been left with consistent data so that
7336 * yydestroyGLRState can be invoked if necessary. */
7337 static YYRESULTTAG
7338 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7339 {
7340 yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal;
7341 yySemanticOption* yybest = yyoptionList;
7342 yySemanticOption** yypp;
7343 yybool yymerge = yyfalse;
7344 YYSTYPE yyval;
7345 YYRESULTTAG yyflag;
7346 YYLTYPE *yylocp = &yys->yyloc;
7347
7348 for (yypp = &yyoptionList->yynext; *yypp != YY_NULLPTR; )
7349 {
7350 yySemanticOption* yyp = *yypp;
7351
7352 if (yyidenticalOptions (yybest, yyp))
7353 {
7354 yymergeOptionSets (yybest, yyp);
7355 *yypp = yyp->yynext;
7356 }
7357 else
7358 {
7359 switch (yypreference (yybest, yyp))
7360 {
7361 case 0:
7362 yyresolveLocations (yys, 1, yystackp, root);
7363 return yyreportAmbiguity (yybest, yyp, root);
7364 break;
7365 case 1:
7366 yymerge = yytrue;
7367 break;
7368 case 2:
7369 break;
7370 case 3:
7371 yybest = yyp;
7372 yymerge = yyfalse;
7373 break;
7374 default:
7375 /* This cannot happen so it is not worth a YY_ASSERT (yyfalse),
7376 but some compilers complain if the default case is
7377 omitted. */
7378 break;
7379 }
7380 yypp = &yyp->yynext;
7381 }
7382 }
7383
7384 if (yymerge)
7385 {
7386 yySemanticOption* yyp;
7387 int yyprec = yydprec[yybest->yyrule];
7388 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7389 if (yyflag == yyok)
7390 for (yyp = yybest->yynext; yyp != YY_NULLPTR; yyp = yyp->yynext)
7391 {
7392 if (yyprec == yydprec[yyp->yyrule])
7393 {
7394 YYSTYPE yyval_other;
7395 YYLTYPE yydummy;
7396 yyflag = yyresolveAction (yyp, yystackp, &yyval_other, &yydummy, root);
7397 if (yyflag != yyok)
7398 {
7399 yydestruct ("Cleanup: discarding incompletely merged value for",
7400 yy_accessing_symbol (yys->yylrState),
7401 &yyval, yylocp, root);
7402 break;
7403 }
7404 yyuserMerge (yymerger[yyp->yyrule], &yyval, &yyval_other);
7405 }
7406 }
7407 }
7408 else
7409 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7410
7411 if (yyflag == yyok)
7412 {
7413 yys->yyresolved = yytrue;
7414 yys->yysemantics.yyval = yyval;
7415 }
7416 else
7417 yys->yysemantics.yyfirstVal = YY_NULLPTR;
7418 return yyflag;
7419 }
7420
7421 static YYRESULTTAG
7422 3813 yyresolveStack (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7423 {
7424
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3813 times.
3813 if (yystackp->yysplitPoint != YY_NULLPTR)
7425 {
7426 yyGLRState* yys;
7427 int yyn;
7428
7429
2/2
✓ Branch 0 taken 10477 times.
✓ Branch 1 taken 3813 times.
14290 for (yyn = 0, yys = yystackp->yytops.yystates[0];
7430 14290 yys != yystackp->yysplitPoint;
7431 10477 yys = yys->yypred, yyn += 1)
7432 10477 continue;
7433
1/2
✓ Branch 0 taken 3813 times.
✗ Branch 1 not taken.
3813 YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp
7434 , root));
7435 3813 }
7436 3813 return yyok;
7437 3813 }
7438
7439 /** Called when returning to deterministic operation to clean up the extra
7440 * stacks. */
7441 static void
7442 3869 yycompressStack (yyGLRStack* yystackp)
7443 {
7444 /* yyr is the state after the split point. */
7445 yyGLRState *yyr;
7446
7447
3/4
✓ Branch 0 taken 3869 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3813 times.
✓ Branch 3 taken 56 times.
3869 if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULLPTR)
7448 56 return;
7449
7450 {
7451 yyGLRState *yyp, *yyq;
7452
2/2
✓ Branch 0 taken 10477 times.
✓ Branch 1 taken 3813 times.
14290 for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULLPTR;
7453 14290 yyp != yystackp->yysplitPoint;
7454 10477 yyr = yyp, yyp = yyq, yyq = yyp->yypred)
7455 10477 yyp->yypred = yyr;
7456 }
7457
7458 3813 yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems;
7459 3813 yystackp->yynextFree = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yysplitPoint) + 1;
7460 3813 yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems;
7461 3813 yystackp->yysplitPoint = YY_NULLPTR;
7462 3813 yystackp->yylastDeleted = YY_NULLPTR;
7463
7464
2/2
✓ Branch 0 taken 3813 times.
✓ Branch 1 taken 10477 times.
14290 while (yyr != YY_NULLPTR)
7465 {
7466 10477 yystackp->yynextFree->yystate = *yyr;
7467 10477 yyr = yyr->yypred;
7468 10477 yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate;
7469 10477 yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate;
7470 10477 yystackp->yynextFree += 1;
7471 10477 yystackp->yyspaceLeft -= 1;
7472 }
7473 3869 }
7474
7475 static YYRESULTTAG
7476 11439 yyprocessOneStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk,
7477 YYPTRDIFF_T yyposn, std::unique_ptr<ZScript::ASTFile>& root)
7478 {
7479
2/2
✓ Branch 0 taken 3813 times.
✓ Branch 1 taken 26219 times.
30032 while (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7480 {
7481 26219 yy_state_t yystate = yystackp->yytops.yystates[yyk]->yylrState;
7482 26219 YY_DPRINTF ((stderr, "Stack %ld Entering state %d\n",
7483 YY_CAST (long, yyk), yystate));
7484
7485 YY_ASSERT (yystate != YYFINAL);
7486
7487
2/2
✓ Branch 0 taken 4925 times.
✓ Branch 1 taken 21294 times.
26219 if (yyisDefaultedState (yystate))
7488 {
7489 YYRESULTTAG yyflag;
7490 4925 yyRuleNum yyrule = yydefaultAction (yystate);
7491
1/2
✓ Branch 0 taken 4925 times.
✗ Branch 1 not taken.
4925 if (yyrule == 0)
7492 {
7493 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7494 yymarkStackDeleted (yystackp, yyk);
7495 return yyok;
7496 }
7497 4925 yyflag = yyglrReduce (yystackp, yyk, yyrule, yyimmediate[yyrule], root);
7498
1/2
✓ Branch 0 taken 4925 times.
✗ Branch 1 not taken.
4925 if (yyflag == yyerr)
7499 {
7500 YY_DPRINTF ((stderr,
7501 "Stack %ld dies "
7502 "(predicate failure or explicit user error).\n",
7503 YY_CAST (long, yyk)));
7504 yymarkStackDeleted (yystackp, yyk);
7505 return yyok;
7506 }
7507
1/2
✓ Branch 0 taken 4925 times.
✗ Branch 1 not taken.
4925 if (yyflag != yyok)
7508 return yyflag;
7509 4925 }
7510 else
7511 {
7512 21294 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
7513 const short* yyconflicts;
7514 21294 const int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
7515 21294 yystackp->yytops.yylookaheadNeeds[yyk] = yytrue;
7516
7517
2/2
✓ Branch 0 taken 3813 times.
✓ Branch 1 taken 21294 times.
25107 for (/* nothing */; *yyconflicts; yyconflicts += 1)
7518 {
7519 YYRESULTTAG yyflag;
7520 3813 YYPTRDIFF_T yynewStack = yysplitStack (yystackp, yyk);
7521 3813 YY_DPRINTF ((stderr, "Splitting off stack %ld from %ld.\n",
7522 YY_CAST (long, yynewStack), YY_CAST (long, yyk)));
7523 7626 yyflag = yyglrReduce (yystackp, yynewStack,
7524 3813 *yyconflicts,
7525 3813 yyimmediate[*yyconflicts], root);
7526
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3813 times.
3813 if (yyflag == yyok)
7527
1/2
✓ Branch 0 taken 3813 times.
✗ Branch 1 not taken.
3813 YYCHK (yyprocessOneStack (yystackp, yynewStack,
7528 yyposn, root));
7529 else if (yyflag == yyerr)
7530 {
7531 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yynewStack)));
7532 yymarkStackDeleted (yystackp, yynewStack);
7533 }
7534 else
7535 return yyflag;
7536 3813 }
7537
7538
2/2
✓ Branch 0 taken 17481 times.
✓ Branch 1 taken 3813 times.
21294 if (yyisShiftAction (yyaction))
7539 3813 break;
7540
2/2
✓ Branch 0 taken 13668 times.
✓ Branch 1 taken 3813 times.
17481 else if (yyisErrorAction (yyaction))
7541 {
7542 3813 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7543 3813 yymarkStackDeleted (yystackp, yyk);
7544 3813 break;
7545 }
7546 else
7547 {
7548 27336 YYRESULTTAG yyflag = yyglrReduce (yystackp, yyk, -yyaction,
7549 13668 yyimmediate[-yyaction], root);
7550
1/2
✓ Branch 0 taken 13668 times.
✗ Branch 1 not taken.
13668 if (yyflag == yyerr)
7551 {
7552 YY_DPRINTF ((stderr,
7553 "Stack %ld dies "
7554 "(predicate failure or explicit user error).\n",
7555 YY_CAST (long, yyk)));
7556 yymarkStackDeleted (yystackp, yyk);
7557 break;
7558 }
7559
1/2
✓ Branch 0 taken 13668 times.
✗ Branch 1 not taken.
13668 else if (yyflag != yyok)
7560 return yyflag;
7561 }
7562 }
7563 }
7564 11439 return yyok;
7565 11439 }
7566
7567 /* Put in YYARG at most YYARGN of the expected tokens given the
7568 current YYSTACKP, and return the number of tokens stored in YYARG. If
7569 YYARG is null, return the number of expected tokens (guaranteed to
7570 be less than YYNTOKENS). */
7571 static int
7572 56 yypcontext_expected_tokens (const yyGLRStack* yystackp,
7573 yysymbol_kind_t yyarg[], int yyargn)
7574 {
7575 /* Actual size of YYARG. */
7576 56 int yycount = 0;
7577 56 int yyn = yypact[yystackp->yytops.yystates[0]->yylrState];
7578
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (!yypact_value_is_default (yyn))
7579 {
7580 /* Start YYX at -YYN if negative to avoid negative indexes in
7581 YYCHECK. In other words, skip the first -YYN actions for
7582 this state because they are default actions. */
7583
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 int yyxbegin = yyn < 0 ? -yyn : 0;
7584 /* Stay within bounds of both yycheck and yytname. */
7585 56 int yychecklim = YYLAST - yyn + 1;
7586
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
7587 int yyx;
7588
2/2
✓ Branch 0 taken 7273 times.
✓ Branch 1 taken 55 times.
7328 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
7589
3/4
✓ Branch 0 taken 108 times.
✓ Branch 1 taken 7165 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 108 times.
7273 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
7590 7272 && !yytable_value_is_error (yytable[yyx + yyn]))
7591 {
7592
1/2
✓ Branch 0 taken 108 times.
✗ Branch 1 not taken.
108 if (!yyarg)
7593 ++yycount;
7594
2/2
✓ Branch 0 taken 107 times.
✓ Branch 1 taken 1 times.
108 else if (yycount == yyargn)
7595 1 return 0;
7596 else
7597 107 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
7598 107 }
7599 55 }
7600
2/6
✓ Branch 0 taken 55 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 55 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
55 if (yyarg && yycount == 0 && 0 < yyargn)
7601 yyarg[0] = YYSYMBOL_YYEMPTY;
7602 55 return yycount;
7603 56 }
7604
7605 static int
7606 56 yy_syntax_error_arguments (const yyGLRStack* yystackp,
7607 yysymbol_kind_t yyarg[], int yyargn)
7608 {
7609
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
✓ Branch 2 taken 56 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 56 times.
✗ Branch 5 not taken.
56 yysymbol_kind_t yytoken = yychar == TOK_YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
7610 /* Actual size of YYARG. */
7611 56 int yycount = 0;
7612 /* There are many possibilities here to consider:
7613 - If this state is a consistent state with a default action, then
7614 the only way this function was invoked is if the default action
7615 is an error action. In that case, don't check for expected
7616 tokens because there are none.
7617 - The only way there can be no lookahead present (in yychar) is if
7618 this state is a consistent state with a default action. Thus,
7619 detecting the absence of a lookahead is sufficient to determine
7620 that there is no unexpected or expected token to report. In that
7621 case, just report a simple "syntax error".
7622 - Don't assume there isn't a lookahead just because this state is a
7623 consistent state with a default action. There might have been a
7624 previous inconsistent state, consistent state with a non-default
7625 action, or user semantic action that manipulated yychar.
7626 - Of course, the expected token list depends on states to have
7627 correct lookahead information, and it depends on the parser not
7628 to perform extra reductions after fetching a lookahead from the
7629 scanner and before detecting a syntax error. Thus, state merging
7630 (from LALR or IELR) and default reductions corrupt the expected
7631 token list. However, the list is correct for canonical LR with
7632 one exception: it will still contain any token that will not be
7633 accepted due to an error action in a later state.
7634 */
7635
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yytoken != YYSYMBOL_YYEMPTY)
7636 {
7637 int yyn;
7638
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yyarg)
7639 56 yyarg[yycount] = yytoken;
7640 56 ++yycount;
7641 112 yyn = yypcontext_expected_tokens (yystackp,
7642
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
7643
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yyn == YYENOMEM)
7644 return YYENOMEM;
7645 else
7646 56 yycount += yyn;
7647 56 }
7648 56 return yycount;
7649 56 }
7650
7651
7652
7653 static void
7654 56 yyreportSyntaxError (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7655 {
7656
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yystackp->yyerrState != 0)
7657 return;
7658 {
7659 56 yybool yysize_overflow = yyfalse;
7660 56 char* yymsg = YY_NULLPTR;
7661 enum { YYARGS_MAX = 5 };
7662 /* Internationalized format string. */
7663 56 const char *yyformat = YY_NULLPTR;
7664 /* Arguments of yyformat: reported tokens (one for the "unexpected",
7665 one per "expected"). */
7666 yysymbol_kind_t yyarg[YYARGS_MAX];
7667 /* Cumulated lengths of YYARG. */
7668 56 YYPTRDIFF_T yysize = 0;
7669
7670 /* Actual size of YYARG. */
7671 56 int yycount
7672 56 = yy_syntax_error_arguments (yystackp, yyarg, YYARGS_MAX);
7673
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 if (yycount == YYENOMEM)
7674 yyMemoryExhausted (yystackp);
7675
7676
3/7
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 7 times.
✓ Branch 4 taken 48 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
56 switch (yycount)
7677 {
7678 #define YYCASE_(N, S) \
7679 case N: \
7680 yyformat = S; \
7681 break
7682 default: /* Avoid compiler warnings. */
7683 YYCASE_(0, YY_("syntax error"));
7684 1 YYCASE_(1, YY_("syntax error, unexpected %s"));
7685 7 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
7686 48 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
7687 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
7688 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
7689 #undef YYCASE_
7690 }
7691
7692 /* Compute error message size. Don't count the "%s"s, but reserve
7693 room for the terminator. */
7694 56 yysize = yystrlen (yyformat) - 2 * yycount + 1;
7695 {
7696 int yyi;
7697
2/2
✓ Branch 0 taken 159 times.
✓ Branch 1 taken 56 times.
215 for (yyi = 0; yyi < yycount; ++yyi)
7698 {
7699 159 YYPTRDIFF_T yysz
7700 159 = yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
7701
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 159 times.
159 if (YYSIZE_MAXIMUM - yysize < yysz)
7702 yysize_overflow = yytrue;
7703 else
7704 159 yysize += yysz;
7705 159 }
7706 }
7707
7708
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (!yysize_overflow)
7709 56 yymsg = YY_CAST (char *, YYMALLOC (YY_CAST (YYSIZE_T, yysize)));
7710
7711
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 if (yymsg)
7712 {
7713 56 char *yyp = yymsg;
7714 56 int yyi = 0;
7715
2/2
✓ Branch 0 taken 2411 times.
✓ Branch 1 taken 56 times.
2467 while ((*yyp = *yyformat))
7716 {
7717
4/6
✓ Branch 0 taken 159 times.
✓ Branch 1 taken 2252 times.
✓ Branch 2 taken 159 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 159 times.
2411 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
7718 {
7719 159 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
7720 159 yyformat += 2;
7721 159 }
7722 else
7723 {
7724 2252 ++yyp;
7725 2252 ++yyformat;
7726 }
7727 }
7728 56 yyerror (root, yymsg);
7729 56 YYFREE (yymsg);
7730 56 }
7731 else
7732 {
7733 yyerror (root, YY_("syntax error"));
7734 yyMemoryExhausted (yystackp);
7735 }
7736 }
7737 56 yynerrs += 1;
7738 56 }
7739
7740 /* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP,
7741 yylval, and yylloc are the syntactic category, semantic value, and location
7742 of the lookahead. */
7743 static void
7744 56 yyrecoverSyntaxError (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7745 {
7746
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yystackp->yyerrState == 3)
7747 /* We just shifted the error token and (perhaps) took some
7748 reductions. Skip tokens until we can proceed. */
7749 while (yytrue)
7750 {
7751 yysymbol_kind_t yytoken;
7752 int yyj;
7753 if (yychar == TOK_YYEOF)
7754 yyFail (yystackp, root, YY_NULLPTR);
7755 if (yychar != TOK_YYEMPTY)
7756 {
7757 /* We throw away the lookahead, but the error range
7758 of the shifted error token must take it into account. */
7759 yyGLRState *yys = yystackp->yytops.yystates[0];
7760 yyGLRStackItem yyerror_range[3];
7761 yyerror_range[1].yystate.yyloc = yys->yyloc;
7762 yyerror_range[2].yystate.yyloc = yylloc;
7763 YYLLOC_DEFAULT ((yys->yyloc), yyerror_range, 2);
7764 yytoken = YYTRANSLATE (yychar);
7765 yydestruct ("Error: discarding",
7766 yytoken, &yylval, &yylloc, root);
7767 yychar = TOK_YYEMPTY;
7768 }
7769 yytoken = yygetToken (&yychar, root);
7770 yyj = yypact[yystackp->yytops.yystates[0]->yylrState];
7771 if (yypact_value_is_default (yyj))
7772 return;
7773 yyj += yytoken;
7774 if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken)
7775 {
7776 if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0)
7777 return;
7778 }
7779 else if (! yytable_value_is_error (yytable[yyj]))
7780 return;
7781 }
7782
7783 /* Reduce to one stack. */
7784 {
7785 YYPTRDIFF_T yyk;
7786
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1)
7787
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7788 56 break;
7789
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 if (yyk >= yystackp->yytops.yysize)
7790 yyFail (yystackp, root, YY_NULLPTR);
7791
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1)
7792 yymarkStackDeleted (yystackp, yyk);
7793 56 yyremoveDeletes (yystackp);
7794 56 yycompressStack (yystackp);
7795 }
7796
7797 /* Pop stack until we find a state that shifts the error token. */
7798 56 yystackp->yyerrState = 3;
7799
2/2
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 502 times.
558 while (yystackp->yytops.yystates[0] != YY_NULLPTR)
7800 {
7801 502 yyGLRState *yys = yystackp->yytops.yystates[0];
7802 502 int yyj = yypact[yys->yylrState];
7803
2/2
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 446 times.
502 if (! yypact_value_is_default (yyj))
7804 {
7805 446 yyj += YYSYMBOL_YYerror;
7806
3/6
✓ Branch 0 taken 444 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 444 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
446 if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYSYMBOL_YYerror
7807
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 444 times.
444 && yyisShiftAction (yytable[yyj]))
7808 {
7809 /* Shift the error token. */
7810 int yyaction = yytable[yyj];
7811 /* First adjust its location.*/
7812 YYLTYPE yyerrloc;
7813 yystackp->yyerror_range[2].yystate.yyloc = yylloc;
7814 YYLLOC_DEFAULT (yyerrloc, (yystackp->yyerror_range), 2);
7815 YY_SYMBOL_PRINT ("Shifting", yy_accessing_symbol (yyaction),
7816 &yylval, &yyerrloc);
7817 yyglrShift (yystackp, 0, yyaction,
7818 yys->yyposn, &yylval, &yyerrloc);
7819 yys = yystackp->yytops.yystates[0];
7820 break;
7821 }
7822 446 }
7823 502 yystackp->yyerror_range[1].yystate.yyloc = yys->yyloc;
7824
2/2
✓ Branch 0 taken 446 times.
✓ Branch 1 taken 56 times.
502 if (yys->yypred != YY_NULLPTR)
7825 446 yydestroyGLRState ("Error: popping", yys, root);
7826 502 yystackp->yytops.yystates[0] = yys->yypred;
7827 502 yystackp->yynextFree -= 1;
7828 502 yystackp->yyspaceLeft += 1;
7829 }
7830
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yystackp->yytops.yystates[0] == YY_NULLPTR)
7831 56 yyFail (yystackp, root, YY_NULLPTR);
7832 }
7833
7834 #define YYCHK1(YYE) \
7835 do { \
7836 switch (YYE) { \
7837 case yyok: break; \
7838 case yyabort: goto yyabortlab; \
7839 case yyaccept: goto yyacceptlab; \
7840 case yyerr: goto yyuser_error; \
7841 case yynomem: goto yyexhaustedlab; \
7842 default: goto yybuglab; \
7843 } \
7844 } while (0)
7845
7846 /*----------.
7847 | yyparse. |
7848 `----------*/
7849
7850 int
7851 55315 yyparse (std::unique_ptr<ZScript::ASTFile>& root)
7852 {
7853 int yyresult;
7854 yyGLRStack yystack;
7855 55315 yyGLRStack* const yystackp = &yystack;
7856 YYPTRDIFF_T yyposn;
7857
7858 55315 YY_DPRINTF ((stderr, "Starting parse\n"));
7859
7860 55315 yychar = TOK_YYEMPTY;
7861 55315 yylval = yyval_default;
7862 55315 yylloc = yyloc_default;
7863
7864
1/2
✓ Branch 0 taken 55315 times.
✗ Branch 1 not taken.
55315 if (! yyinitGLRStack (yystackp, YYINITDEPTH))
7865 goto yyexhaustedlab;
7866
2/4
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 55259 times.
✗ Branch 3 not taken.
55315 switch (YYSETJMP (yystack.yyexception_buffer))
7867 {
7868 55259 case 0: break;
7869 56 case 1: goto yyabortlab;
7870 case 2: goto yyexhaustedlab;
7871 default: goto yybuglab;
7872 }
7873 55259 yyglrShift (&yystack, 0, 0, 0, &yylval, &yylloc);
7874 55259 yyposn = 0;
7875
7876 55315 while (yytrue)
7877 {
7878 /* For efficiency, we have two loops, the first of which is
7879 specialized to deterministic operation (single stack, no
7880 potential ambiguity). */
7881 /* Standard mode. */
7882 628534697 while (yytrue)
7883 {
7884 628534697 yy_state_t yystate = yystack.yytops.yystates[0]->yylrState;
7885 628534697 YY_DPRINTF ((stderr, "Entering state %d\n", yystate));
7886
2/2
✓ Branch 0 taken 628479438 times.
✓ Branch 1 taken 55259 times.
628534697 if (yystate == YYFINAL)
7887 55259 goto yyacceptlab;
7888
2/2
✓ Branch 0 taken 245385672 times.
✓ Branch 1 taken 383093766 times.
628479438 if (yyisDefaultedState (yystate))
7889 {
7890 245385672 yyRuleNum yyrule = yydefaultAction (yystate);
7891
1/2
✓ Branch 0 taken 245385672 times.
✗ Branch 1 not taken.
245385672 if (yyrule == 0)
7892 {
7893 yystack.yyerror_range[1].yystate.yyloc = yylloc;
7894 yyreportSyntaxError (&yystack, root);
7895 goto yyuser_error;
7896 }
7897
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 245385672 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
245385672 YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue, root));
7898 245385672 }
7899 else
7900 {
7901 383093766 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
7902 const short* yyconflicts;
7903 383093766 int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
7904
2/2
✓ Branch 0 taken 383089953 times.
✓ Branch 1 taken 3813 times.
383093766 if (*yyconflicts)
7905 /* Enter nondeterministic mode. */
7906 3813 break;
7907
2/2
✓ Branch 0 taken 97530455 times.
✓ Branch 1 taken 285559498 times.
383089953 if (yyisShiftAction (yyaction))
7908 {
7909 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
7910 97530455 yychar = TOK_YYEMPTY;
7911 97530455 yyposn += 1;
7912 97530455 yyglrShift (&yystack, 0, yyaction, yyposn, &yylval, &yylloc);
7913
1/2
✓ Branch 0 taken 97530455 times.
✗ Branch 1 not taken.
97530455 if (0 < yystack.yyerrState)
7914 yystack.yyerrState -= 1;
7915 97530455 }
7916
2/2
✓ Branch 0 taken 285559442 times.
✓ Branch 1 taken 56 times.
285559498 else if (yyisErrorAction (yyaction))
7917 {
7918 56 yystack.yyerror_range[1].yystate.yyloc = yylloc;
7919 /* Issue an error message unless the scanner already
7920 did. */
7921
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yychar != TOK_YYerror)
7922 56 yyreportSyntaxError (&yystack, root);
7923 56 goto yyuser_error;
7924 }
7925 else
7926
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 285559442 times.
✗ Branch 5 not taken.
285559442 YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue, root));
7927 }
7928 }
7929
7930 /* Nondeterministic mode. */
7931 3813 while (yytrue)
7932 {
7933 yysymbol_kind_t yytoken_to_shift;
7934 YYPTRDIFF_T yys;
7935
7936
2/2
✓ Branch 0 taken 3813 times.
✓ Branch 1 taken 3813 times.
7626 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
7937 3813 yystackp->yytops.yylookaheadNeeds[yys] = yychar != TOK_YYEMPTY;
7938
7939 /* yyprocessOneStack returns one of three things:
7940
7941 - An error flag. If the caller is yyprocessOneStack, it
7942 immediately returns as well. When the caller is finally
7943 yyparse, it jumps to an error label via YYCHK1.
7944
7945 - yyok, but yyprocessOneStack has invoked yymarkStackDeleted
7946 (&yystack, yys), which sets the top state of yys to NULL. Thus,
7947 yyparse's following invocation of yyremoveDeletes will remove
7948 the stack.
7949
7950 - yyok, when ready to shift a token.
7951
7952 Except in the first case, yyparse will invoke yyremoveDeletes and
7953 then shift the next token onto all remaining stacks. This
7954 synchronization of the shift (that is, after all preceding
7955 reductions on all stacks) helps prevent double destructor calls
7956 on yylval in the event of memory exhaustion. */
7957
7958
2/2
✓ Branch 0 taken 7626 times.
✓ Branch 1 taken 3813 times.
11439 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
7959
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 7626 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7626 YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn, root));
7960 3813 yyremoveDeletes (&yystack);
7961
1/2
✓ Branch 0 taken 3813 times.
✗ Branch 1 not taken.
3813 if (yystack.yytops.yysize == 0)
7962 {
7963 yyundeleteLastStack (&yystack);
7964 if (yystack.yytops.yysize == 0)
7965 yyFail (&yystack, root, YY_("syntax error"));
7966 YYCHK1 (yyresolveStack (&yystack, root));
7967 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
7968 yystack.yyerror_range[1].yystate.yyloc = yylloc;
7969 yyreportSyntaxError (&yystack, root);
7970 goto yyuser_error;
7971 }
7972
7973 /* If any yyglrShift call fails, it will fail after shifting. Thus,
7974 a copy of yylval will already be on stack 0 in the event of a
7975 failure in the following loop. Thus, yychar is set to TOK_YYEMPTY
7976 before the loop to make sure the user destructor for yylval isn't
7977 called twice. */
7978
2/4
✓ Branch 0 taken 3813 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3813 times.
3813 yytoken_to_shift = YYTRANSLATE (yychar);
7979 3813 yychar = TOK_YYEMPTY;
7980 3813 yyposn += 1;
7981
2/2
✓ Branch 0 taken 3813 times.
✓ Branch 1 taken 3813 times.
7626 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
7982 {
7983 3813 yy_state_t yystate = yystack.yytops.yystates[yys]->yylrState;
7984 const short* yyconflicts;
7985 3813 int yyaction = yygetLRActions (yystate, yytoken_to_shift,
7986 &yyconflicts);
7987 /* Note that yyconflicts were handled by yyprocessOneStack. */
7988 3813 YY_DPRINTF ((stderr, "On stack %ld, ", YY_CAST (long, yys)));
7989 YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc);
7990 3813 yyglrShift (&yystack, yys, yyaction, yyposn,
7991 &yylval, &yylloc);
7992 3813 YY_DPRINTF ((stderr, "Stack %ld now in state %d\n",
7993 YY_CAST (long, yys),
7994 yystack.yytops.yystates[yys]->yylrState));
7995 3813 }
7996
7997
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3813 times.
3813 if (yystack.yytops.yysize == 1)
7998 {
7999
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3813 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3813 YYCHK1 (yyresolveStack (&yystack, root));
8000 3813 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
8001 3813 yycompressStack (&yystack);
8002 3813 break;
8003 }
8004 }
8005 3813 continue;
8006 yyuser_error:
8007 56 yyrecoverSyntaxError (&yystack, root);
8008 56 yyposn = yystack.yytops.yystates[0]->yyposn;
8009 }
8010
8011 yyacceptlab:
8012 55259 yyresult = 0;
8013 55259 goto yyreturnlab;
8014
8015 yybuglab:
8016 YY_ASSERT (yyfalse);
8017 goto yyabortlab;
8018
8019 yyabortlab:
8020 56 yyresult = 1;
8021 56 goto yyreturnlab;
8022
8023 yyexhaustedlab:
8024 yyerror (root, YY_("memory exhausted"));
8025 yyresult = 2;
8026 goto yyreturnlab;
8027
8028 yyreturnlab:
8029
2/2
✓ Branch 0 taken 55259 times.
✓ Branch 1 taken 56 times.
55315 if (yychar != TOK_YYEMPTY)
8030 56 yydestruct ("Cleanup: discarding lookahead",
8031
2/4
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 56 times.
56 YYTRANSLATE (yychar), &yylval, &yylloc, root);
8032
8033 /* If the stack is well-formed, pop the stack until it is empty,
8034 destroying its entries as we go. But free the stack regardless
8035 of whether it is well-formed. */
8036
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 55315 times.
55315 if (yystack.yyitems)
8037 {
8038 55315 yyGLRState** yystates = yystack.yytops.yystates;
8039
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 55315 times.
55315 if (yystates)
8040 {
8041 55315 YYPTRDIFF_T yysize = yystack.yytops.yysize;
8042 YYPTRDIFF_T yyk;
8043
2/2
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 55315 times.
55371 for (yyk = 0; yyk < yysize; yyk += 1)
8044
2/2
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 55259 times.
55315 if (yystates[yyk])
8045 {
8046
2/2
✓ Branch 0 taken 165777 times.
✓ Branch 1 taken 55259 times.
221036 while (yystates[yyk])
8047 {
8048 165777 yyGLRState *yys = yystates[yyk];
8049 165777 yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;
8050
2/2
✓ Branch 0 taken 110518 times.
✓ Branch 1 taken 55259 times.
165777 if (yys->yypred != YY_NULLPTR)
8051 110518 yydestroyGLRState ("Cleanup: popping", yys, root);
8052 165777 yystates[yyk] = yys->yypred;
8053 165777 yystack.yynextFree -= 1;
8054 165777 yystack.yyspaceLeft += 1;
8055 }
8056 55259 break;
8057 }
8058 55315 }
8059 55315 yyfreeGLRStack (&yystack);
8060 55315 }
8061
8062 55315 return yyresult;
8063 }
8064
8065 /* DEBUGGING ONLY */
8066 #if YYDEBUG
8067 /* Print *YYS and its predecessors. */
8068 static void
8069 yy_yypstack (yyGLRState* yys)
8070 {
8071 if (yys->yypred)
8072 {
8073 yy_yypstack (yys->yypred);
8074 YY_FPRINTF ((stderr, " -> "));
8075 }
8076 YY_FPRINTF ((stderr, "%d@%ld", yys->yylrState, YY_CAST (long, yys->yyposn)));
8077 }
8078
8079 /* Print YYS (possibly NULL) and its predecessors. */
8080 static void
8081 yypstates (yyGLRState* yys)
8082 {
8083 if (yys == YY_NULLPTR)
8084 YY_FPRINTF ((stderr, "<null>"));
8085 else
8086 yy_yypstack (yys);
8087 YY_FPRINTF ((stderr, "\n"));
8088 }
8089
8090 /* Print the stack #YYK. */
8091 static void
8092 yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
8093 {
8094 yypstates (yystackp->yytops.yystates[yyk]);
8095 }
8096
8097 /* Print all the stacks. */
8098 static void
8099 yypdumpstack (yyGLRStack* yystackp)
8100 {
8101 #define YYINDEX(YYX) \
8102 YY_CAST (long, \
8103 ((YYX) \
8104 ? YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX)) - yystackp->yyitems \
8105 : -1))
8106
8107 yyGLRStackItem* yyp;
8108 for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1)
8109 {
8110 YY_FPRINTF ((stderr, "%3ld. ",
8111 YY_CAST (long, yyp - yystackp->yyitems)));
8112 if (*YY_REINTERPRET_CAST (yybool *, yyp))
8113 {
8114 YY_ASSERT (yyp->yystate.yyisState);
8115 YY_ASSERT (yyp->yyoption.yyisState);
8116 YY_FPRINTF ((stderr, "Res: %d, LR State: %d, posn: %ld, pred: %ld",
8117 yyp->yystate.yyresolved, yyp->yystate.yylrState,
8118 YY_CAST (long, yyp->yystate.yyposn),
8119 YYINDEX (yyp->yystate.yypred)));
8120 if (! yyp->yystate.yyresolved)
8121 YY_FPRINTF ((stderr, ", firstVal: %ld",
8122 YYINDEX (yyp->yystate.yysemantics.yyfirstVal)));
8123 }
8124 else
8125 {
8126 YY_ASSERT (!yyp->yystate.yyisState);
8127 YY_ASSERT (!yyp->yyoption.yyisState);
8128 YY_FPRINTF ((stderr, "Option. rule: %d, state: %ld, next: %ld",
8129 yyp->yyoption.yyrule - 1,
8130 YYINDEX (yyp->yyoption.yystate),
8131 YYINDEX (yyp->yyoption.yynext)));
8132 }
8133 YY_FPRINTF ((stderr, "\n"));
8134 }
8135
8136 YY_FPRINTF ((stderr, "Tops:"));
8137 {
8138 YYPTRDIFF_T yyi;
8139 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
8140 YY_FPRINTF ((stderr, "%ld: %ld; ", YY_CAST (long, yyi),
8141 YYINDEX (yystackp->yytops.yystates[yyi])));
8142 YY_FPRINTF ((stderr, "\n"));
8143 }
8144 #undef YYINDEX
8145 }
8146 #endif
8147
8148 #undef yylval
8149 #undef yychar
8150 #undef yynerrs
8151 #undef yylloc
8152
8153
8154
8155
8156 #line 2459 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
8157
8158
8159 /* programs */
8160
8161 std::string yyerrstr(string const& msg, int32_t row, int32_t col, char const* txt)
8162 {
8163 ostringstream out;
8164 out << msg << " ["
8165 << curfilename << " "
8166 << "Line " << row << " "
8167 << "Column " << col;
8168 if (yyleng)
8169 out << " '" << txt << "'";
8170 out << "]";
8171 return out.str();
8172 }
8173 void yymsg(string const& message, int32_t row, int32_t col, char const* txt)
8174 {
8175 zconsole_info(yyerrstr(message,row,col,txt).c_str());
8176 }
8177 void yywarn(string const& message, int32_t row, int32_t col, char const* txt)
8178 {
8179 zconsole_warn(yyerrstr(message,row,col,txt).c_str());
8180 }
8181 void yyerrmsg(string const& message, int32_t row, int32_t col, char const* txt)
8182 {
8183 zparser_error_out();
8184 zconsole_error(yyerrstr(message,row,col,txt).c_str());
8185 }
8186 void yydb(string const& message, int32_t row, int32_t col, char const* txt)
8187 {
8188 zconsole_db(yyerrstr(message,row,col,txt).c_str());
8189 }
8190
8191 void yyerror(std::unique_ptr<ASTFile>&, const char *s)
8192 {
8193 yyerrmsg(s);
8194 }
8195
8196 namespace ZScript
8197 {
8198 std::unique_ptr<ASTFile> parseFile(std::string const& filename, bool is_buf)
8199 {
8200 std::unique_ptr<ASTFile> result;
8201
8202 // Reset lexer.
8203 yyin = NULL;
8204 resetLexer();
8205
8206 // Read in the file.
8207 yyin = fopen(filename.c_str(), "r");
8208 yyout = std::tmpfile();
8209 if (!yyin)
8210 {
8211 zconsole_error("Can't open input file");
8212 return nullptr;
8213 }
8214 curfilename = is_buf ? "ZQ_BUFFER" : filename;
8215
8216 // Run the parser.
8217 if (yyparse(result))
8218 {
8219 result.reset();
8220 }
8221 fclose(yyout);
8222 fclose(yyin);
8223
8224 return std::unique_ptr<ASTFile>(result.release());
8225 }
8226 };
8227